設定平行索引作業
在執行 Microsoft SQL Server 2005 Enterprise Edition 的多處理器電腦上,索引陳述式可能會使用更多的處理器,來執行與索引陳述式關聯的掃描和排序作業,就像其他查詢一樣。執行單一索引陳述式所運用的處理器數目,是由 max degree of parallelism 組態選項以及目前的工作負載來決定。max degree of parallelism 選項可用來限制用於平行計劃執行的處理器個數。如果「SQL Server 2005 Database Engine」偵測到系統正在忙碌,在陳述式執行開始之前,會先自動降低索引作業之平行處理原則的程度。
附註: |
---|
只有 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
。假設伺服器有八個或更多的處理器,Database Engine 會限制索引作業的執行為八個或更少的處理器。
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)