Kettle数据库连接高级配置及连接池配置详解
创作时间:
作者:
@小白创作中心
Kettle数据库连接高级配置及连接池配置详解
引用
CSDN
1.
https://blog.csdn.net/weixin_42924611/article/details/145732205
本文详细介绍了Kettle(Pentaho Data Integration)中数据库连接的高级配置和连接池配置。通过本文,读者可以了解各个参数的具体作用和推荐配置值,从而优化Kettle的数据处理和ETL工作流程。
一、高级配置
选项名称 | 作用 | 备注 |
|---|---|---|
支持布尔数据类型 | 允许支持布尔数据类型的字段,通常用于存储布尔值(true或false)。 | 关系型数据库不直接支持布尔数据类型,而是使用特定的数据类型来表示布尔值,比如在 MySQL 中使用的是TINYINT(1)。当使用 Kettle 进行数据处理时,需要将布尔值从 Kettle 传递给数据库中的相关列,此时就需要确保数据库连接池能够正确地将布尔类型的值传递给数据库。如果选择了 “支持布尔数据类型”,那么在配置中插入布尔值,连接池会将布尔值转换为数据库支持的数据类型。比如,将布尔值true转换为1,将布尔值false转换为0,以便正确地与数据库进行交互。但如果选择了 “不支持布尔数据类型”,连接池会抛出错误或警告。 |
Supports the timestamp data type | 允许支持时间戳数据类型,用于存储日期和时间。 | 时间戳数据类型用于存储日期和时间信息,并且在许多数据库中都有特定的数据类型来表示时间戳,例如 MySQL 中的TIMESTAMP。如果选择了 “支持时间戳数据类型”,那么在配置中插入的时间戳值会被连接池直接传递给数据库,并且可以正确处理和存储时间戳类型的数据。如果数据库对标识符的大小写敏感,建议勾选以正确处理标识符。 |
标识符使用引号括起来 | 标识符使用引号括起来,确保标识符不会被解析为关键字。 | |
强制标识符使用小写字母 | 强制标识符使用小写字母,确保标识符不会混合大小写。 | 如果数据库要求标识符严格使用小写字母,建议勾选。 |
强制标识符使用大写字母 | 强制标识符使用大写字母,确保标识符不会混合大小写。 | 如果数据库要求标识符严格使用大写字母,建议勾选。 |
Preserve case of reserved words | 保留保留字的大小写,避免保留字被错误解析。 | 如果应用程序使用保留字(如AS、FROM等),勾选该选项可以确保保留字的大小写正确无误,避免语法错误。 |
Default schema name. Use it when no other schema name is specified. | 默认模式名称,在没有其他模式名时使用指定的模式名称。 | |
Execute SQL statement on connection success | 连接成功后执行指定的SQL语句,使用分号分隔多个语句。 | 这个功能通常用于在建立数据库连接后,需要进行一些初始化或准备工作的场景。例如,你可能希望在每次建立连接时都自动进行一些特定的查询或设置一些会话参数。通过配置这个选项,你可以在连接成功后自动执行这些 SQL 语句,而不需要在每次连接后手动执行。 |
二、JDBC参数配置
参数名称 | 参数作用 | 推荐值 | 推荐理由 |
|---|---|---|---|
useServerPrepStmts | 启用服务器端预处理语句,提升批量操作性能 | true | 减少客户端预处理开销,提升批量操作效率(需结合rewriteBatchedStatements使用) |
useCompression | 启用客户端与MySQL服务器通信压缩,减少网络带宽占用 | false | 压缩会增加CPU负载,仅在网络带宽受限时启用(如远程数据库) |
rewriteBatchedStatements | 重写批量SQL语句(如合并INSERT语句),提升批量写入性能 | true | 显著提升批量插入/更新性能(如ETL场景) |
defaultFetchSize | 设置结果集每次从数据库获取的行数,平衡内存与网络开销 | 500-1000 | 减少内存占用,避免一次性加载大结果集(需结合useCursorFetch=true生效) |
useCursorFetch | 启用游标逐块获取结果集,减少内存占用 | true(大数据量) | 处理大结果集时避免OOM,但可能略微增加延迟 |
characterEncoding | 指定连接字符编码(如UTF-8) | UTF-8 | 避免中文乱码,兼容多语言字符 |
maxReconnects | 定义连接断开后最大重试次数 | 3 | 防止无限重试导致线程阻塞,兼顾容错性 |
autoReconnect | 连接断开后自动重连 | false | 自动重连可能导致事务状态不一致,建议由连接池管理重试 |
nullCatalogMeansCurrent | 将null目录视为当前数据库 | true | 兼容旧版本JDBC驱动行为,避免跨库操作问题 |
useSSL | 启用SSL加密通信 | true(生产环境) | 保障数据传输安全,但需配置证书(测试环境可设为false) |
serverTimezone | 指定数据库服务器时区(如Asia/Shanghai) | 与数据库一致 | 避免时间字段转换错误(如Java应用与MySQL时区不一致) |
useUnicode | 强制使用Unicode编码 | true | 确保非ASCII字符(如中文)正确存储和读取 |
failOverReadOnly | 故障转移时是否仅允许只读操作 | true | 避免主从切换时写入数据导致不一致 |
connectTimeout | 建立连接超时时间(毫秒) | 3000 | 防止网络故障时线程长时间阻塞 |
socketTimeout | 网络读写超时时间(毫秒) | 60000 | 避免慢查询或网络问题导致线程挂起 |
allowPublicKeyRetrieval | 允许从服务器获取公钥(解决SSL连接问题) | false | 存在安全风险,仅在MySQL 8.0+且SSL配置错误时临时启用 |
maxAllowedPacket | 设置客户端允许的最大数据包大小(单位:字节) | 16777216 | 避免大数据插入/查询时报Packet too large错误 |
使用以下组合可以显著提升批量操作和大数据查询效率:
useServerPrepStmts=true
rewriteBatchedStatements=true
useCursorFetch=true
defaultFetchSize=1000
三、连接池配置
参数名称 | 参数作用 | 默认值 | 推荐值 | 推荐值理由 |
|---|---|---|---|---|
连接池大小 | 连接池的大小,即同时保持的连接数量。 | 50 | 根据CPU核心数(4-8核)和并发需求,50个连接可以满足大多数场景 | |
最大空闲空间 | 最大空闲连接数,表示连接池中允许保持的空闲连接的最大数量。 | 10 | 保持10个空闲连接可以快速响应突发请求,同时不会占用过多资源 | |
defaultAutoCommit | 连接的默认自动提交状态。默认情况下,新连接会设置为true,表示每次操作后自动提交。设置为 false 时,表示连接不会自动提交事务,需要手动调用 commit() 方法来提交事务。 | true | false | 建议关闭自动提交,以便更好地控制事务边界,避免意外提交 |
defaultReadOnly | 当 defaultReadOnly 参数设置为 true 时,表示连接将以只读模式进行操作;当设置为 false 时,表示连接可以进行读写操作。 | false | 默认允许读写操作,除非明确知道只需要读操作 | |
defaultTransactionIsolation | 新连接的默认事务隔离级别,包括* NONE:表示不支持事务* READ_COMMITTED:表示一个事务可以读取另一个事务修改但还没有提交的数据。这可以导致脏读、不可重复读和幻读的问题。* READ_UNCOMMITTED:表示一个事务只能读取另一个事务已经提交的数据,可以避免脏读,但是不可重复读和幻读仍然可能发生。* REPEATABLE_READ :表示一个事务在整个过程中都可以看到同样的数据记录。可以避免脏读和不可重复读,但是仍可能出现幻读问题。* SERIALIZABLE:表示事务串行执行,可以避免脏读、不可重复读和幻读,但会影响性能。 | READ_COMMITTED | 在性能和一致性之间取得平衡,避免脏读同时保持较好性能 | |
defaultCatalog | 新连接的默认目录(schema)。 | 根据需求设置 | 由具体业务数据库决定,通常不需要设置 | |
initialSize | 连接池启动时创建的初始连接数量。 | 0 | 5 | 启动时创建5个连接,可以快速响应初始请求 |
maxActive | 连接池中同时允许的最大活跃连接数量,负值表示无限制。 | 8 | 50 | 最大活跃连接数设置为50,可以应对高峰期的并发需求 |
maxIdle | 连接池中可以保持空闲而不释放额外连接的最大连接数,-1表示没有限制。 | 8 | 20 | 最大空闲连接数设置为20,在空闲时保持一定连接数以快速响应 |
minIdle | 连接池中允许的最小空闲连接数量。 | 0 | 5 | 最小空闲连接数保持5个,确保随时有可用连接 |
maxWait | 连接池等待可用连接的最大时间(毫秒),-1表示无限等待。 | -1 | 30000 | 推荐值为30000毫秒(30秒),适用于一般的连接等待情况。 |
validationQuery | 用于验证连接存活的SQL查询,必须是一个返回至少一行的SELECT语句。 | “SELECT 1 NOW()” | 推荐使用简单的查询,确保连接存活。 | |
testOnBorrow | 在获取连接时进行验证。如果验证失败,连接会被移除。 | true | true | 在获取连接时验证,确保获取的连接是有效的 |
testOnReturn | 在归还连接时进行验证。 | false | true | 归还时不需要验证,减少性能开销 |
testWhileIdle | 空闲连接时进行验证。 | false | true | 空闲时定期验证连接,及时清理无效连接 |
timeBetweenEvictionRunsMillis | 空闲连接清理线程等待的时间(毫秒)。 | 60000 | 推荐值为60000毫秒(60秒),适用于一般的空闲连接清理。 | |
poolPreparedStatements | 是否启用准备语句池。 | false | true | 启用准备语句池,提高SQL执行效率 |
maxOpenPreparedStatements | 同时允许的最大准备语句数量。 | -1 | 100 | 推荐值为100,适用于处理大量预编译语句的情况。 |
accessToUnderlyingConnectionAllowed | 是否允许访问连接池的底层连接。 | false | false | 禁止访问底层连接,确保连接池管理可控 |
removeAbandoned | 是否移除被遗弃的连接。 | false | true | 启用遗弃连接移除,防止连接泄漏 |
removeAbandonedTimeout | 被遗弃连接的超时(秒)。 | 300 | 60 | 300秒后移除被遗弃的连接 |
logAbandoned | 是否对被遗弃的连接记录日志。 | false | true | 记录被遗弃的连接日志,便于排查问题 |
本文原文来自CSDN
热门推荐
转向助力泵出现问题怎样进行修理?修理转向助力泵的方法有哪些?
四轮定位怎么调整?调整四轮定位时有哪些步骤和注意事项?
冬季洗澡不当竟致死?日本年均1.4万!
冬季洗澡频次大揭秘:别再伤肤了!
冬季洗澡习惯引发热议:阿德勒、孟非怎么看?
《哪吒2》勇登中国影视票房冠军!国漫崛起背后有东布洲动画的影子
云浮十大旅游景点:从国恩寺到天露山,总有一处让你流连忘返
探秘云浮天露山:人间仙境还是探险天堂?
云浮蟠龙洞:亿年溶洞里的地下仙境
六祖镇:云浮市深度游必打卡地
神农架至兰州自驾游省钱攻略:新能源汽车充电全攻略
神农架到兰州自驾游攻略:一路美景不断!
威尼斯:向海而生的商业共和国
民国一代影歌两栖皇后周璇,37岁死于精神病院
曾子与孔子:《孝经》中的儒家伦理探秘
贯云石的《孝经直解》:元代口语的魅力
柏拉图VS亚里士多德:一场持续两千年的思想较量
纳豆激酶:预防血栓的新希望?
纳豆激酶真的能帮你降血压吗?
《雅典学派》中的哲学课堂:苏格拉底与柏拉图的教学智慧
双十一购车攻略:坦克300最实惠入手秘籍
如何清洁不锈钢煎锅
不锈钢炒锅如何开锅,开锅后如何保养
广州7大古镇古村全攻略:岭南韵味里的诗意之旅
日均近3万人!大湾区灯会热度持续攀升,春节游南沙有着数
如何清洁不锈钢煎锅
白蔻、草蔻和肉蔻一字之差,用途完全不同,厨师:难怪肉不香还腥
八角的功效与作用及食用方法
了解OBD系统:汽车故障诊断与监控的关键工具,助你维护爱车健康
紫薯水晶汤圆:木薯粉的神仙吃法!