本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 MAXDOP 以获得最佳性能最大并行度 (MAXDOP) 是一个服务器配置选项,用于在多个 CPU 上运行 SQL Server。它控制用于在并行计划执行中运行单个语句的处理器数量。原定设置值为 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 指系统中逻辑 CPU 的数量。
hyperthread_ratio 是一个物理处理器暴露的内核数量之比。
softnuma_configuration 为 0、1 或 2:
0 (OFF): 默认值
1 (automated):基于软件的 NUMA
2 (manual):基于软件的 NUMA
softnuma_configuration_desc 为 OFF、ON 或 MANUAL:
OFF 表示基于软件的 NUMA 功能已关闭。
ON 表示 SQL Server 会自动决定 NUMA 节点的大小。
MANUAL 表示基于软件的 NUMA 为手动配置。
socket_count 是处理器插槽的数量。
numa_node_count 是系统中可用的 NUMA 节点的数量。
要检查当前最大并行度 (MAXDOP) 值,请使用:
$ sp_configure 'max_degree_of_parallelism'有关最大并行度 (MAXDOP) 的更多信息,请参阅 Microsoft SQL Server 文档。