摘要:[SQL SERVER] 實戰紀錄 處理大量平行處理(Parallelism)、鎖定(lock)等待
協助使用者的SQL SERVER處理效能問題
該主機24core / 32G ram
CPU長期處於70以上
1. 檢視報表可發現隨時都有Parallelism跟Lock等待 (常常暴增上百個)
2. 檢視最耗CPU的幾個語法及執行計畫,cost約17~18不等
3. 先修改平行處理原則的成本臨界值,修改為20 (預設為5),修改完後檢視報表,已無Parallelism,Lock等待,且CPU馬上降至40~50
4. 檢視最耗CPU語法等等,加上適當索引,協助AP使用者修改TSQL查詢語法後,最後CPU降至10
資料庫效率不好,常常是無適當索引,或是不好的查詢語法造成的
了解執行計畫以及適當索引的建置,可以大幅改善機器效能
平行處理原則的成本臨界值(Cost Threshold for Parallelism):
代表cost超過多少就使用平行處理,也就是多顆CPU來執行語法,看執行計畫可以知道用了多少core跑該語法,
這個案例的執行計畫用了17core,所以才會有大量的平行處理,先修改為20,讓他不使用平行處理,也就是只用1個core來跑,可以降低Parallelism等待。
平行處理原則的最大程度(Max Degree of Parallelism):
代表當使用平行處理的時候,最多用幾個core,0代表不限制,若是2代表最多只會有2core