本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 MAXDOP 以獲得最佳效能
平行處理的最大程度 (MAXDOP) 是在多個 CPUs伺服器組態選項。它控制在平行計畫執行中執行單一陳述式的處理器數量。預設值為 0,可讓 SQL Server 使用所有可用的處理器。這可能會影響效能,而且不適用於大多數使用案例。
設定 SQL Server 的 MAXDOP 值時,請使用下列準則。
| NUMA 節點 | 邏輯處理器 | MAXDOP 值 |
|---|---|---|
| 單一 | ≤ 8 | 4、2 或核心數量 (適用於一個或兩個核心) |
| 單一 | > 8 | 8、4 或 2 |
| 多個 | ≤ 16 | 8、4 或 2 |
| 多個 | > 16 | 16、8、4 或 2 |
注意
將 MAXDOP 設定為 2、4 或 8 通常可在大多數使用案例中提供最佳結果。我們建議您測試工作負載,並監控任何平行處理相關的等待類型,例如 CXPACKET。
您可以使用下列查詢來收集 SQL Server 2016 和更新版本的目前 NUMA 組態:
select @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), cpu_count, hyperthread_ratio, softnuma_configuration, softnuma_configuration_desc, socket_count, numa_node_count from sys.dm_os_sys_info
其中:
-
cpu_count是指系統中邏輯 CPUs 的數量。 -
hyperthread_ratio是某個實體處理器公開的核心數量比例。 -
softnuma_configuration為0、1或2:-
0 (OFF):預設 -
1 (automated):soft-NUMA -
2 (manual):soft-NUMA
-
-
softnuma_configuration_desc為OFF、ON或MANUAL:-
OFF表示 soft-NUMA 功能已關閉。 -
ON表示 SQL Server 會自動決定 NUMA 節點大小。 -
MANUAL表示 Soft-NUMA 已手動設定。
-
-
socket_count是處理器通訊端的數量。 -
numa_node_count是系統中可用的 NUMA 節點數量。
若要檢查目前的 MAXDOP 值,請使用:
$ sp_configure 'max_degree_of_parallelism'
如需 MAXDOP 的詳細資訊,請參閱 Microsoft SQL Server 文件