KETTLE抽取數據慢,可能是以下幾方面導致

A:SPOON 啟動時候內存較小,在spoon.bat這個啟動文件中,配置的有JVM的內存XMX,("%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="- Xms8192m" "-Xmx8192m" "-XX:MaxPermSize=4096m"),默認這個是256M,512M 256M, 其中Xms是指JVM初始分配的堆棧的內存,Xmx是指JVM分配的堆棧的內存 (JAVA代碼能涉及到的存儲數據變量的內存)最大是多少,所以XMS必須要<= XMX,XX:MaxPermSize,是指JVM給自己分配的非堆棧內存(供虛擬機程序自己開銷)我的因 為是在服務器上跑,因此改成了8192M\\8192M\\4096M,這個改不能是無限的加大,需要考慮總的內存大小,一般來說網上參考是最大堆棧內存不超過總內存的3/8有的也說是 一半,總之得有個度。

B:使用輸入、輸出時,新表不要建主鍵(允許為空--防止歷史數據有為空的導致報錯)

C:抽數的源數據庫關鍵字段沒有索引

D:抽數的源數據庫關鍵字段索引在SPOON裡面失效 原因是用 > 號的時候,索引會失效,而用>=則不會

E:如果進行大數據量的傳輸,將日誌的級別調整為只輸出錯誤日誌

F:mysql表輸出的時候出現減速的原因可能是因為網絡鏈接的屬性設置

在此處添加參數:

useServerPrepStmts=false

rewriteBatchedStatements=true

useCompression=true

G:kettle 允許線程多開

H:可以適當的提高數據集的大小

I:可以併發處理job

J:修改 “轉換屬性---雜項--記錄集合裡的記錄數”中的數據,可以增加傳輸速率


Kettle的數據庫連接模式

Kettle的數據庫連接是一個步驟裡面控制一個單數據庫連接,所以kettle的連接有數據庫連接池,你可以在指定的數據庫連接裡面指定一開始連接池裡面放多少個數據庫連接,在創建數據庫連接的時候就有Pooling 選項卡,裡面可以指定最大連接數和初始連接數,這可以一定程度上提高速度.


分享到:


相關文章: