设置 MAXDOP 以获得最佳性能 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 MAXDOP 以获得最佳性能

最大并行度 (MAXDOP) 是一个服务器配置选项,用于在多个服务器上运行 SQL Server。 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_configuration012:

    • 0 (OFF): 默认值

    • 1 (automated):基于软件的 NUMA

    • 2 (manual):基于软件的 NUMA

  • softnuma_configuration_descOFFONMANUAL:

    • 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 文档