執行緒數目對資料庫的影響

lusklusklusk發表於2017-05-12
環境介紹
客戶端程式所在伺服器是windows,4核CPU

服務端資料庫伺服器是linux,16核CPU


實驗現象
客戶端一個程式視窗,對應程式開5個執行緒,現象如下
資料庫服務端5個process,每個process 100%耗CPU,先4個process同時執行完畢持續時間長達5分鐘,後面1個process再執行完畢需要3分鐘,資料庫服務端所有process執行完畢後持續時間長達10分鐘

客戶端一個程式視窗,對應程式開4個執行緒,現象如下
資料庫服務端4個process,每個process 100%耗CPU,資料庫服務端4個process同時執行完畢持續時間長達4分鐘




總結如下
客戶端只有4核CPU,開5個執行緒的話,客戶端只能先跑4個執行緒再跑剩下的一個執行緒,每個執行緒獨佔一核CPU,佔用CPU時間的時間是一樣的,這樣在客戶端跑4個執行緒是跑5個執行緒的一半時間,跑8個和5個執行緒時間一樣。

但是在資料庫伺服器linux上面,是一下子上來5個process,4個process先跑完,再跑最後一個process,服務端的process跑完的同時客戶端程式也執行完畢了

執行緒數,首先要小於服務端的cpu核數,其次最好小於等於客戶端的cpu核數(如果多於客戶端的cpu核數,那客戶端本身就在等待佇列中)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2138977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章