当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。您可以使用 max degree of parallelism 选项来限制执行并行计划时所用的处理器数量。若要使服务器能够确定最大并行度,请将此选项设置为默认值 0。若将 maximum degree of parallelism 设置为 0,SQL Server 将能够使用至多 64 个可用的处理器。若要取消生成并行计划,请将 max degree of parallelism 设置为 1。将该值设置为大于 1 的数值来限制执行单个并行查询时所使用的最大处理器数。并行度设置的最大值由 SQL Server 的版本、CPU 类型和操作系统控制。如果指定的值比可用的处理器数大,则使用实际可用数量的处理器。如果计算机只有一个处理器,则将忽略 max degree of parallelism 值。
值 |
SQL Server 版本 |
---|---|
1 |
SQL Server Express |
2 |
SQL Server Workgroup |
4 |
SQL Server 2008 Web |
4 |
SQL Server 2008 Standard |
32 |
在 x86 操作系统上运行的 SQL Server 2008 Enterprise。 |
覆盖 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)。