max degree of parallelism 选项

当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。您可以使用 max degree of parallelism 选项来限制并行计划执行时所用的处理器数。如果默认值为 0,则使用所有可用的处理器(最多 64 个 CPU)。将 max degree of parallelism 设置为 1 以取消生成并行计划。将该值设置为大于 1 的数字(最大为 64)来限制执行单个查询时所用的最大处理器数。如果指定的值比可用的处理器数大,则使用实际可用数量的处理器。如果计算机只有一个处理器,则将忽略 max degree of parallelism 值。

覆盖 max degree of parallelism 值

SQL Server 将考虑为查询、索引数据定义语言 (DDL) 操作、静态的和由键集驱动的游标填充实施并行执行计划。有关并行执行的详细信息,请参阅并行度

您可以通过在查询语句中指定 MAXDOP 查询提示来覆盖查询中的 max degree of parallelism 值。有关详细信息,请参阅查询提示 (Transact-SQL)

索引操作(如创建或重新生成索引、或删除聚集索引)可能会大量占用资源。您可以通过在索引语句中指定 MAXDOP 索引选项来覆盖索引操作的 max degree of parallelism 值。MAXDOP 值在执行时应用于语句,但不存储在索引元数据中。有关详细信息,请参阅配置并行索引操作

除了查询和索引操作之外,此选项还控制 DBCC CHECKTABLE、DBCC CHECKDB 和 DBCC CHECKFILEGROUP 的并行。使用跟踪标志 2528,可以禁用为这些语句所做的并行执行计划。有关详细信息,请参阅跟踪标志 (Transact-SQL)

注意注意

如果 affinity mask 选项不设置为默认值,则可能会限制可用于对称多处理 (SMP) 系统上的 SQL Server 的处理器数。

设置 max degree of parallelism 选项

max degree of parallelism 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 max degree of parallelism。该设置立即生效(无需重新启动 MSSQLSERVER 服务)。

下面的示例将 max degree of parallelism 选项设置为 8。

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 8;
GO
RECONFIGURE WITH OVERRIDE;
GO

有关在 SQL Server Management Studio 中设置 max degree of parallelism 值的详细信息,请参阅如何配置可用于并行查询的处理器数 (SQL Server Management Studio)