一、提高傳輸數(shù)據(jù)同步效率
1.數(shù)據(jù)庫連接增加以下配置
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
oracle讀取慢添加:
在選項中添加defaultRowPrefetch,值設(shè)置為10000以上,具體是數(shù)據(jù)庫情況而定

圖片.png
2.使用連接池
注意:使用連接池后, 在第一次創(chuàng)建連接池后不會隨著該kettle任務(wù)線程結(jié)束銷毀線程池, 而是與項目的生命周期保持一致, 可以使用jobMeta.clear();方法銷毀連接池;
樓主遇到的坑:同步過程中使用的線程池中的連接失效導(dǎo)致線程無法釋放, 再次重啟還是使用失效的連接, 最終只能重啟項目銷毀線程池

圖片.png
二、0000-00-00 00:00:00值字段同步異常
kettle報錯信息: can not be represented as java.sql.Timestamp
解決方案:
zeroDateTimeBehavior=convertToNull

圖片.png
三、跑大數(shù)據(jù)量,內(nèi)存溢出
1.kettle在同步以job為單位, job不執(zhí)行完 不釋放內(nèi)存.
建議: 大數(shù)據(jù)量時分批跑, 例如按照id/時間進行分片執(zhí)行, 使用連接池并且java在初始化JobMeta時只初始化一次.