适用范围:SQL Server
本文介绍如何使用 SQL Server Management Studio、Azure Data Studio 或 Transact-SQL 在 SQL Server 中配置“max degree of parallelism
(MAXDOP)”服务器配置选项。 当 SQL Server 实例在具有多个微处理器或 CPU 的计算机上运行时,数据库引擎 会检测是否可以使用并行。 并行度为每次并行计划的执行设置运行单个语句时要使用的处理器数。 您可以使用 max degree of parallelism
选项来限制执行并行计划时所用的处理器数量。 若要详细了解 max degree of parallelism
设置的限制,请参阅此页中的注意事项部分。 SQL Server 考虑为查询、索引数据定义语言 (DDL) 操作、并行插入、联机更改列、并行统计信息集合以及静态的和由键集驱动的游标填充实施并行执行计划。
SQL Server 2019 (15.x) 介绍了有关在安装过程中如何基于可用处理器数量设置 max degree of parallelism
服务器配置选项的自动建议。 安装程序用户界面允许接受建议的设置或输入自己的值。 有关详细信息,请参阅“数据库引擎配置 - MaxDOP”页。
在 Azure SQL 数据库、Fabric 中的 SQL 数据库和 Azure SQL 托管实例中,每个 新的 单一数据库、弹性池数据库和托管实例的默认 MAXDOP 设置是 8
。 在 Azure SQL 数据库和 Fabric 中的 SQL 数据库中,MAXDOP
范围的配置被设置为 8
。 在 Azure SQL 托管实例中,max degree of parallelism
服务器配置选项设置为 8
。
有关 Azure SQL 数据库 中 MAXDOP 的详细信息,请参阅在 Azure SQL 数据库中配置最大并行度 (MAXDOP)。
Considerations
此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改。
如果 affinity mask 选项不设置为默认值,则可能会限制可用于对称多处理 (SMP) 系统上的 SQL Server 的处理器数。
若将 max degree of parallelism
设置为 0
,SQL Server 将能够使用至多 64 个可用的处理器。 但在大多数情况下,不推荐使用此值。 有关最大并行度的建议值的详细信息,请参阅此页中的建议部分。
若要取消生成并行计划,请将 max degree of parallelism
设置为 1
。 将该值设置为 1 到 32,767 之间的数值来指定执行单个查询所使用的最大处理器核数。 如果指定的值比可用的处理器数大,则使用实际可用数量的处理器。 如果计算机只有一个处理器,则将忽略 max degree of parallelism
值。
将按任务设置最大并行度限制。 它不是按请求限制或按查询限制。 这意味着在并行查询执行期间,一个请求可生成多个任务(不超过 MAXDOP 限制),并且每个任务使用一个工作线程和一个计划程序。 有关详细信息,请参阅线程和任务体系结构指南中的“计划并行任务”部分。
可重写“最大并行度”服务器配置值:
- 在查询级别,使用
MAXDOP
查询提示或查询存储提示。 - 在数据库级别,请使用
MAXDOP
数据库范围的配置。 - 在工作负载级别,使用
MAX_DOP
CREATE WORKLOAD GROUP。
索引操作(如创建或重新生成索引、或删除聚集索引)可能会大量占用资源。 您可以通过在索引语句中指定 MAXDOP 索引选项来覆盖索引操作的 max degree of parallelism 值。 MAXDOP 值在执行时应用于语句,但不存储在索引元数据中。 有关详细信息,请参阅 配置并行索引操作。
除了查询和索引操作之外,此选项还控制 DBCC CHECKTABLE
、DBCC CHECKDB
和 DBCC CHECKFILEGROUP
的并行。 使用跟踪标志 2528,可以禁用这些语句的并行执行计划。 有关更多信息,请参阅跟踪标记 2528。
SQL Server 2022 (16.x) 引入了“并行度 (DOP) 反馈”,此新功能根据运行时间和等待时间来标识重复查询的并行低效率,从而提高查询性能。 DOP 反馈是智能查询处理功能系列的一部分,可解决重复查询的并行度使用率欠佳问题。 有关 DOP 反馈的信息,请访问并行度 (DOP) 反馈。
Recommendations
在 SQL Server 2016 (13.x) 及更高版本中,在服务启动期间,如果数据库引擎在启动时检测到每个 NUMA 节点或插槽内的物理内核数目超过 8 个,在默认情况下就会自动创建 soft-NUMA 节点。 数据库引擎 将相同物理内核中的逻辑处理器放入不同的 soft-NUMA 节点中。 下表中的建议旨在将并行查询的所有工作线程保持在相同 soft-NUMA 节点中。 这会提高跨工作负载 NUMA 节点查询和分布工作线程的性能。 有关详细信息,请参阅 Soft-NUMA (SQL Server)。
在 SQL Server 2016 (13.x) 及更高版本中,请按照以下准则配置 max degree of parallelism
服务器配置值:
Server configuration | 处理器数目 | Guidance |
---|---|---|
具有单个 NUMA 节点的服务器 | 小于或等于 8 个逻辑处理器 | 将 MAXDOP 保持为小于或等于逻辑处理器的数量 |
具有单个 NUMA 节点的服务器 | 大于 8 个逻辑处理器 | 将 MAXDOP 保持为 8 个 |
具有多个 NUMA 节点的服务器 | 每个 NUMA 节点拥有小于或等于 16 个逻辑处理器 | 将 MAXDOP 保持为小于或等于每个 NUMA 节点的逻辑处理器的数量 |
具有多个 NUMA 节点的服务器 | 每个 NUMA 节点大于 16 个逻辑处理器 | 将 MAXDOP 保持为每个 NUMA 节点逻辑处理器数量的一半,最大值为 16 |
上表中的 NUMA 节点是指,由 SQL Server 2016 (13.x) 及更高版本自动创建的 soft-NUMA 节点,或基于硬件的 NUMA 节点(如果 soft-NUMA 已禁用)。
为 Resource Governor 工作负荷组设置“最大并行度”选项时,请使用这些相同的准则。 有关详细信息,请参阅 CREATE WORKLOAD GROUP。
SQL Server 2014 及更早版本
从 SQL Server 2008 (10.0.x) 到 SQL Server 2014 (12.x),请使用以下准则配置 max degree of parallelism
服务器配置值:
Server configuration | 处理器数目 | Guidance |
---|---|---|
具有单个 NUMA 节点的服务器 | 小于或等于 8 个逻辑处理器 | 将 MAXDOP 保持为小于或等于逻辑处理器的数量 |
具有单个 NUMA 节点的服务器 | 大于 8 个逻辑处理器 | 将 MAXDOP 保持为 8 个 |
具有多个 NUMA 节点的服务器 | 每个NUMA 节点拥有小于或等于 8 个逻辑处理器 | 将 MAXDOP 保持为小于或等于每个 NUMA 节点的逻辑处理器的数量 |
具有多个 NUMA 节点的服务器 | 每个 NUMA 节点大于 8 个逻辑处理器 | 将 MAXDOP 保持为 8 个 |
Permissions
默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure
的执行权限。 若要使用两个参数执行 sp_configure
来更改配置选项或运行 RECONFIGURE
语句,用户必须拥有 ALTER SETTINGS
服务器级别权限。
ALTER SETTINGS
权限由 sysadmin 和 serveradmin 固定服务器角色隐式拥有。
使用 SQL Server Management Studio 或 Azure Data Studio
在 Azure Data Studio 中,安装 Database Admin Tool Extensions for Windows
扩展或使用以下 T-SQL 方法。
这些选项可更改实例的 MAXDOP
。
在“对象资源管理器”中,右键单击所需的实例,然后选择“属性”。
选择“高级”节点。
在 “最大并行度” 框中,选择执行并行计划时所使用的最大处理器数。
Use Transact-SQL
使用 SQL Server Management Studio 或 Azure Data Studio 连接到数据库引擎。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例说明如何使用 sp_configure 将
max degree of parallelism
选项的值配置为16
。USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO EXECUTE sp_configure 'max degree of parallelism', 16; GO RECONFIGURE WITH OVERRIDE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
有关详细信息,请参阅服务器配置选项。
跟进:在配置“最大并行度”选项后
该设置将立即生效,无需重新启动服务器。