配置并行索引操作

在运行 Microsoft SQL Server 2005 Enterprise Edition 的多处理器计算机上,索引语句可能像其他查询一样,使用多个处理器执行与其关联的扫描和排序操作。用于运行单个索引语句的处理器数量由配置选项 max degree of parallelism 和当前工作负荷决定。max degree of parallelism 选项可以限制在并行计划执行中使用的处理器数量。如果 SQL Server 2005 数据库引擎 检测到系统忙,索引操作的并行度将自动降低,然后再开始执行语句。

ms189329.note(zh-cn,SQL.90).gif注意:
并行索引操作只适用于 SQL Server 2005 Enterprise Edition。

查询优化器使用的处理器数量通常能够提供最佳的性能。但是,有些操作(如创建、重新生成或删除很大的索引)占用大量资源,在索引操作期间会造成没有足够的资源供其他应用程序和数据库操作使用。出现此问题时,您可以通过指定 MAXDOP 索引选项并限制用于索引操作的处理器数量,手动配置用来运行索引语句的处理器数量。

MAXDOP 索引选项只为指定此选项的查询覆盖 max degree of parallelism 配置选项。下表列出了可为 max degree of parallelism 配置选项和 MAXDOP 索引选项指定的有效整数值。

说明

0

根据当前系统工作负荷,使用实际可用的 CPU 数量。这是默认值,还是推荐设置。

1

取消生成并行计划。操作将以串行方式执行。

2-64

将处理器的数量限制为指定的值。根据当前工作负荷,可能使用较少的处理器。如果指定的值大于可用的 CPU 数量,将使用实际可用的 CPU 数量。

并行索引执行和 MAXDOP 索引选项适用于下列 Transact-SQL 语句:

  • CREATE INDEX
  • ALTER INDEX REBUILD
  • DROP INDEX(只适用于聚集索引。)
  • ALTER TABLE ADD (索引) CONSTRAINT
  • ALTER TABLE DROP (聚集索引) CONSTRAINT

使用 MAXDOP 索引选项时,与 max degree of parallelism 配置选项一起使用的所有语义规则均适用。有关详细信息,请参阅 max degree of parallelism 选项

当执行带有或不带 LOB_COMPACTION 的 ALTER INDEX REORGANIZE 语句时,max degree of parallelism 值属于单线程操作。不能在 ALTER INDEX REORGANIZE 语句中指定 MAXDOP 索引选项。

联机索引操作

联机索引操作允许在索引操作期间进行并发用户活动。可以使用 MAXDOP 选项控制专用于联机索引操作的处理器数量。通过这种方式,可以平衡在索引操作和并发用户之间使用的资源。有关详细信息,请参阅联机执行索引操作

分区索引操作

如果查询优化器将并行度应用于生成操作,则需要排序的已分区索引操作的内存需求可能会很大。并行度越高,内存需求就越大。有关详细信息,请参阅已分区索引的特殊指导原则

示例

下列示例在 ProductVendor 表中创建索引 IX_ProductVendor_VendorID,并将 max degree of parallelism 选项设置为 8。假设服务器有八个或更多处理器,数据库引擎 会将执行索引操作时使用的处理器数量限制为八个或少于八个。

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO

请参阅

概念

并行查询处理

其他资源

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助