我正在使用java中的多線程讀取vertica數據庫中的數據。 我有大約20萬條記錄,我打開5個不同的線程有這樣的選擇查詢....通過java中的多線程從數據庫中讀取
start = threadnum;
while (start*20000<=totalRecords){
select * from tableName order by colname limit 20000 offset start*20000.
start +=5;
}
上述查詢分配20K重複的記錄從數據庫到每個線程讀取。 例如第一個線程會先讀取20k個記錄,然後從100 000個位置開始讀取20K個記錄等
但是我沒有得到性能改進。事實上,如果使用單個線程需要x秒來讀取2000萬條記錄,那麼每個線程從數據庫讀取需要幾乎x秒的時間。 x秒(x/5秒)不應該有所改善嗎?
任何人都可以指出哪裏出了問題?
遵循這個邏輯,你只需要用''n''來增加線程數,以減少總處理時間''1/n''。 – Matt
網絡不是多線程的。你可以使用盡可能多的線程,但一旦你使網絡飽和,就是這樣,沒有進一步的改進可能。 – EJP