Kettle優化就這麼多
Kettle正常轉換速度
場景 |
正常 |
不正常 |
資料庫操作 |
3k-2w條/秒 |
2000條/秒以下 |
檔案操作 |
2w條/秒以上 |
1w條以下 |
http、get、set |
比資料庫慢 |
|
容易產生效能問題的場景
查詢類:
資料庫查詢:資料庫查詢、資料庫連線、插入更新
Web查詢 :http/get/set webservice
計算類
格式轉換(位元組與字元互相轉換,日期)、
轉換一般用計算器和JavaScript方法。
排序類
排序、合併連線(依賴於排序)、分組(依賴於排序)
調優的關鍵:Rowset
Rowset是兩個步驟之間的快取(大小可以自己設定)
如何找到效能瓶頸:觀察Rowset,執行ktr檔案時觀察下面的視窗值(100/0表示輸入100條記錄,輸出0條記錄。如果輸入遠大於輸出,就說明這個步驟來不及處理,就是瓶頸。)
Rowset值的設定:編輯》設定》雜項》記錄集合裡的記錄數》10000,表示快取裡的最大記錄數就是10000
其他觀察方法:效能圖,和步驟度量效果一樣。
如何提高效能
合理增加索引
資料庫查詢:儘可能多的使用相等=判斷來篩選資料;如果是等值查詢,表就建hash索引;如果是比較查詢,就建B樹索引
增加複製數:查詢類。多執行緒,2-8個執行緒一個步驟。具體自己調整。
加大快取:排序類,查詢類。
叢集:查詢類、運算類、排序
更換其他的實現方式:JavaScript、Java類
注意日誌級別:Rowlevel的效能是Basic級別的1/10
.spoonrc在.kettle目錄下
注意死鎖問題
資料庫表死鎖:讀寫同一個表(表現是ktr在running,卡在那不動)
轉換本身死鎖:
這裡死鎖的原因:排序記錄要求將所有的記錄都讀取到之後再排序,快取設定10000,發完要下游處理完才能再次傳送。這樣以來排序需要更多資料,而表輸入是複製記錄到兩個下游,一個要更多的資料,一個不要更多的資料。所以,死鎖。
解決辦法:
相關文章
- SQL優化這麼做就對了SQL優化
- MySQL索引優化看這篇文章就夠了!MySql索引優化
- Android App效能優化技能,看這篇就夠了AndroidAPP優化
- 為什麼凸優化這麼重要?優化
- 搞懂babel7常用的配置和優化,這篇就夠了!Babel優化
- MySQL的鎖這麼多,不知從何學起,看完這篇文章就夠了MySql
- Elasticsearch就這麼簡單Elasticsearch
- seo新手優化網站效果不明顯,竟然是這個原因!看完這個就懂了優化網站
- ICLR 2020 | 模型引數這麼多,泛化能力為什麼還能這麼強?ICLR模型
- 堆排序就這麼簡單排序
- 泛型就這麼簡單泛型
- 快速排序就這麼簡單排序
- 拓撲排序就這麼回事排序
- Android深度效能優化--記憶體優化(一篇就夠)Android優化記憶體
- 如何優化多個關鍵詞?分享多關鍵詞優化心得優化
- 優就業的前置培優課是什麼?怎麼樣?就業
- 跨域就這麼點事兒跨域
- CSS魔法堂:Transition就這麼好玩CSS
- 乾貨 | PHP就該這麼學!PHP
- SpringMVC入門就這麼簡單SpringMVC
- 基數排序就這麼簡單排序
- 歸併排序就這麼簡單排序
- 插入排序就這麼簡單排序
- 選擇排序就這麼簡單排序
- SpringDataJPA入門就這麼簡單Spring
- 氣泡排序就這麼簡單排序
- Roguelike 遊戲的這些共性問題怎麼優化?遊戲優化
- 23條前端效能優化,看懂就夠了!前端優化
- 前端多資料渲染優化前端優化
- AI那麼厲害,那測試開發和自動化測試這些職位是不是就多餘了?AI
- 我就想加個索引,怎麼就這麼難?索引
- 為什麼Python這麼火,就業前景如何?Python就業
- 是兄弟!就來看這篇多執行緒!叄執行緒
- java序列化,看這篇就夠了Java
- 《Linux就該這麼學》第四課Linux
- LinkedHashMap就這麼簡單【原始碼剖析】HashMap原始碼
- 策略模式原來就這麼簡單!模式
- TreeMap就這麼簡單【原始碼剖析】原始碼
- UML就這麼悄悄死掉了嗎? (Ernesto)