看了很多关于表输出速度慢的博客感觉有两条对我有作用。
我的问题是表输出(insert)速度很快,但是插入/更新组件的速度特别忙。
表输出速度慢
mysql表输出的时候出现减速的原因可能是因为网络链接的属性设置
在数据库连接里添加参数:
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
如图所示
提高每次表输出的提交量
经过这样操作成功的从5条每秒到18条每秒
表插入/更新
需要插入更新的主键字段类型不一致,需要注意下类型转换,比如主键原表是int型,插入的表的主键是varchar2型,就需要在插入前对int型做一个转换,转为char或者varchar型,不同数据库字符串类型不同。类型相同,长度不同貌似不影响。
使用以下两个函数转换类型(无法转换成varchar)
select CONVERT(1231245555,CHAR)
select CAST(123312312 as char)
如果字段类型相同,更新速度也特别慢可能是表输入中的字段存在一对多,也可能是kettle的查询关键字不是表的主键
修改后可以看出每秒1600+条
之前都是每秒5条,执行半个多小时。