SQL Server 2008配置並行索引操作

iSQlServer發表於2008-12-18

在執行 SQL Server Enterprise 的多處理器計算機上,索引語句可能會像其他查詢那樣,使用多個處理器來執行與索引語句關聯的掃描、排序和索引操作。用於執行單個索引語句的處理器數是由配置選項 max degree of parallelism、當前工作負荷以及索引統計資訊決定的。max degree of parallelism 選項決定了執行並行計劃時使用的最大處理器數。如果 SQL Server 資料庫引擎檢測到系統忙,索引操作的並行度將自動降低,然後再開始執行語句。如果非分割槽索引的第一個鍵列包含有限數量的非重複值,或者每個非重複值的出現頻率變化較大,資料庫引擎也可能會降低並行度。

注意:
並行索引操作僅在 SQL Server Enterprise Edition、Developer Edition 和 Evaluation 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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-515885/,如需轉載,請註明出處,否則將追究法律責任。

相關文章