一、提高传输数据同步效率
1.数据库连接增加以下配置
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
oracle读取慢添加:
在选项中添加defaultRowPrefetch,值设置为10000以上,具体是数据库情况而定
2.使用连接池
注意:使用连接池后, 在第一次创建连接池后不会随着该kettle任务线程结束销毁线程池, 而是与项目的生命周期保持一致, 可以使用jobMeta.clear();方法销毁连接池;
楼主遇到的坑:同步过程中使用的线程池中的连接失效导致线程无法释放, 再次重启还是使用失效的连接, 最终只能重启项目销毁线程池
二、0000-00-00 00:00:00值字段同步异常
kettle报错信息: can not be represented as java.sql.Timestamp
解决方案:
zeroDateTimeBehavior=convertToNull
三、跑大数据量,内存溢出
1.kettle在同步以job为单位, job不执行完 不释放内存.
建议: 大数据量时分批跑, 例如按照id/时间进行分片执行, 使用连接池并且java在初始化JobMeta时只初始化一次.