问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号