SQL Server 的設定「平行處理原則的成本臨界值」
SQL Server 裡有個設定「平行處理原則的成本臨界值」(cost threshold for parallelism) (如下圖 1),此設定,用來決定 任一句 SQL 語句或作業執行時,SQL Server 是否要使用「平行處理(Parallelism)」。
此設定,「預設值」為 5。 但 .NET Conf Taiwan 2020 研討會的講師、網路上多篇文章,普遍認為,設為 5 太低。
此設定,值設得越低,越容易造成 SQL Server 使用「平行處理(Parallelism)」,也就是使用 CPU 的多個 Core,來處理某些很耗用 CPU 的 SQL 語句。
這樣一來,當某一句 SQL 語句 需要耗用大量的 CPU 資源 (如: BI、Data Warehouse、複雜的報表撈取、寫得效能極差的 SQL 語句),它就會佔用 CPU 的多個 Core 來處理,造成其他的 SQL 語句 都要排隊等待 CPU 資源。
此設定,值若設得高些,當某一句 SQL 語句 需要耗用大量的 CPU 資源,它就只會佔用 CPU 的一個 Core (SQL Server 不使用「平行處理」),避免造成其他的 SQL 語句 都要排隊等待 CPU 資源。
建議的設定方式 (參考研討會講師、網路文章) :
* 設為 25 ~ 50。 但仍應視不同的系統需求來設定,並應要撰寫程式來測試、監控此設定是否適合自家系統。
此設定,設定完後會立即生效,不需要重新啟動伺服器。
---------------------------------
版工找網路上的範例,做實驗 :
如下圖 2,用「預設值 5」,去撈 AdventureWorks 資料庫的 Sales.SalesOrderDetail 資料表的全部資料,會啟用「平行處理」。
如下圖 3,將值改成 50 (立即生效,不需要重新啟動),去撈 AdventureWorks 資料庫的 Sales.SalesOrderDetail 資料表的全部資料,就不會再啟用「平行處理」。
-----------------------------------------------
-----------------------------------------------
參考文章 1 :
設定 cost threshold for parallelism 伺服器組態選項
-----------------------------------------------
參考文章 2 :
Max Degree of Parallelism vs Cost Threshold for Parallelism
The recommended setting for the "Cost Threshold for Parallelism" is 25 to 50 and has a default value of 5. Yes, the default setting is too low.
By changing this, SQL Server will reduce the number of smaller queries that may use parallelism. (若把「預設值 5」加大,SQL Server 會減少「小型查詢」也濫用「平行處理」的情況發生)
There have been many times where simply changing this setting from the default, I have seen the CPU utilization drop from close to 100% to less than 10%. (我有多次看到,只是簡單地改變「預設值 5」,CPU 的使用率就從接近 100 % 降到低於 10 %)。
-----------------------------------------------
參考文章 3 (本文圖 2、圖 3 的實驗範例) :
Do Queries Always Respect Cost Threshold of Parallelism?
-----------------------------------------------
相關文章 :
實戰紀錄 處理大量平行處理(Parallelism)、鎖定(lock)等待
Five SQL Server Settings to Change
認識平行(parallelism)處理,以 MAXDOP、cost threshold for parallelism 與 max degree of parallelism 選項為例
-----------------------------------------------
圖 1 來源 :
.NET Conf Taiwan 研討會
場次: SQL Server 效能和你想的不一樣
講師: 許致學
-----------------------------------------------