ETL優化html
Extract、Transform、Load,對異構數據源進行數據處理。數據庫
設立基線標準,根據硬盤、網絡傳輸速度,多測測量獲得數據量(m)/時間(s)的比值,找線性關係。創建基線做爲調試和優化的依據,避免人爲主觀判斷。例如通過優化後,性能比基線提升了2%。緩存
1. 數據庫優化網絡
1.1 數據庫配置性能
配置鏈接池優化
優化數據庫配置參數調試
2. SQL優化orm
2.1 數據庫索引htm
索引做用在於查詢時提升效率,這是以下降插入、修改和刪除操做的性能爲代價。考慮插入數據前刪除索引,插入完成後再建立索引。blog
2.2 優化查詢語句
3.ETL優化
3.1 提升Commit size
具體數值能夠根據性能監控的記錄來肯定
3.2 儘可能不要使用Insert/Update組件
正常狀況下在幾百條每秒(對比TableInsert幾萬的速度)
3.3 減小分組排序組件
排序和分組的操做會在這一步阻塞KTR的執行,直到接收到前面全部步驟傳過來的數據爲止,致使ETL的運行時間增加,佔用的內存增大。
3.4 調整步驟之間的緩存
在性能監測時,這也是一個用來找到瓶頸的核心參數。若是某一步的輸入和配置的緩存大小接近,可是輸出很小,那麼這一步就是性能的瓶頸。若是緩存大小配置了10000,可是幾乎全部步驟的輸入輸出都只有很低的一個值,好比50,那麼,性能的瓶頸就是輸入。
3.5 延遲轉化
不少字段在讀入到最後輸出,實際上都沒有被操做過,開啓延遲轉化可讓kettle在必要的時候再進行轉化。這裏的轉化是指從二進制到字符串之間的轉化,在輸入和輸出都是文本的時候更爲明顯。事實上,Select Values在轉化的效率上也高於讀取時直接轉化。
3.6 複製並行處理
在須要並行處理的步驟上,選擇Change Number of Copies to Start, 修改這個值爲小於機器核心總數的一個值,通常2〜4就能夠知足要
3.7 減小步驟的數量
3.8 Select Values慎刪除字段
4. 其餘優化
- 使用Carte管理KJB和KTR減少內存消耗
- 使用定時器定時處理
- 使用集羣並行運行
- 使用數據倉庫及緩慢更新進行同步增量更新