由於kettle提高表輸出寫入速度太低,每秒速度三四十,實在忍受不了,參考一些資料之後進行了以下改變,我只進行了第一項的速度每秒五六千,加上其他的測試速度有達到3萬多,有一分鐘二十多萬的記錄,沒測試極限,下為更改的地方:
no.1
mysql表輸出的時候出現減速的原因可能是因為網路鏈結的屬性設定在此處新增引數:
useserverprepstmts=false如圖:rewritebatchedstatements=true
usecompression=true
kettle 允許執行緒多開(此處效能提公升有限,可輔助檢視效能瓶頸所在)也可以適當的提高資料集的大小此處未改,不同的mysql資料庫版本好似有資料傳輸限制會報prepared statement contains too many placeholders,我用的是5.7的沒有出現這個錯誤
no.4
提高每次表輸出的提交量更改大小視機器的記憶體大小改變,
最後的
kettle還可以併發處理jobkettle中etl的效率優化
資料庫配置
連線池配置
資料庫連線池在業務資料量比較多,而且短連線很多的時候適合配置。在這個時候,每次資料庫連線建立和斷開所花費的時間遠長於進行資料庫操作的時間,配置連線池可以更好的利用網路資源,將連線建立和斷開的開銷降低到最小。因此在大多數情況下,配置kettle資料庫連線池均可提高etl的效能,如果沒有配置連線池,那麼在資料量大時候很容易出現error connecting database error。
該設定主要是在建立及管理連線的部分:
資料庫連線 -> 連線池 -> 使用連線池
設定連線池的大小及相應引數,這些引數需要根據資料庫實際情況及使用情況進行配置,可以諮詢dba。
資料庫引數設定
在資料庫連線的面板中,選擇「選項」,(上面兩個是普通和高階),在引數列表中,根據情況新增以下引數:
defaultrowprefetch = 200; (default = 10)
這個引數是修改每次從資料庫取回的記錄的行數,預設為10,修改為200後可以減少從資料庫取值的次數。
(oracle only) readtimeout = 60;
這個引數是修改從資料庫讀資料時的超時時間,單位是秒,將這個值改大一點可以防止大量資料讀取時的超時問題
(mysql only) useserverprepstmts=false;
rewritebatchedstatements=true ; usecompression=true ;
前兩個引數會讓資料庫重排insert語句,合併多條插入語句成為一條,提交插入效率。第三個引數表示在傳輸時開啟資料壓縮 ,提高傳輸效率。這些在使用table output的時候很有效,在配置充足且網路正常的情況下應該可以達到20k~80k的寫入速度。
由於kettle提高表輸出寫入速度太低,每秒速度三四十,實在忍受不了,參考一些資料之後進行了以下改變,我只進行了第一項的速度每秒五六千,加上其他的測試速度有達到3萬多,有一分鐘二十多萬的記錄,沒測試極限,下為更改的地方:
nginx https 效能調優提高速度
1 在 nginx 中開啟 http 2.0 listen 443 ssl 改為 listen 443 ssl http2 2 調整ssl buffer size ssl buffer size 控制在傳送資料時的 buffer 大小,預設設定是 16k。這個值越小,則延遲越小。因此如果你的服務是 ...
linux dns 網路訪問速度調優01
nscd 快取dns服務 安裝nscd yum y install nscd 配置 etc nscd.conf enable cache yes開啟dns解析進行快取 解析成功的dns的快取時間設定 解析失敗的dns的快取時間設定 nscd內部雜湊表的大小 是否檢查 etc hosts 主機檔案的變...
Qt中提高sqlite的讀寫速度
sqlite資料庫本質上來講就是乙個磁碟上的檔案,所以一切的資料庫操作其實都會轉化為對檔案的操作,而頻繁的檔案操作將會是乙個很好時的過程,會極大地影響資料庫訪問的速度。例如 向資料庫中插入100萬條資料,在預設的情況下如果僅僅是執行query.exec insert into database va...