共用方式為


設定平行索引作業

本主題定義平行處理原則的最大程度,並說明如何在 SQL Server 2012 中使用 SQL Server Management Studio 或 Transact-SQL 修改此設定。 在執行 SQL Server Enterprise 或更新版本的多處理器電腦上,索引陳述式可能會如同其他查詢般,使用多個處理器來執行與索引陳述式相關聯的掃描、排序和索引作業。 用來執行單一索引陳述式的處理器數目,取決於平行處理原則的最大程度組態選項、目前工作負載以及索引統計資料。max degree of parallelism 選項會決定用於執行平行計畫的處理器數目上限。 如果 SQL Server Database Engine 偵測到系統忙碌中,在陳述式執行開始之前,會先自動降低索引作業之平行處理原則的程度。如果非資料分割索引的前端索引鍵資料行具備有限的相異值數目,或者每個相異值的頻率具有大幅差異,Database Engine 也可能會降低平行處理原則的程度。

[!附註]

並非所有 SQL Server 版本都可使用平行索引作業。 如需詳細資訊,請參閱<SQL Server 2012 版本支援的功能>。

本主題內容

  • 開始之前:

    限制事項

    安全性

  • 若要設定平行處理原則的最大程度,使用:

    SQL Server Management Studio

    Transact-SQL

開始之前

限制事項

  • 查詢最佳化工具所使用的處理器數目通常可以提供最佳的效能。 然而,諸如建立、重建、卸除非常大的索引都需要大量的資源,並可能在索引作業期間造成其他應用程式和資料庫作業的資源不足。 當發生此問題時,您可以限制索引作業要使用的處理器數目,藉以手動設定執行索引陳述式要使用的最大處理器數目。

  • 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

  • 在 ALTER INDEX REORGANIZE 陳述式中無法指定 MAXDOP 索引選項。

  • 如果查詢最佳化工具將平行處理原則的程度套用至建立作業,則需要排序的資料分割索引作業可能需要更多的記憶體。 平行處理原則的程度愈高,所需的記憶體就愈大。 如需詳細資訊,請參閱<分割資料表與索引>。

安全性

權限

需要資料表或檢視的 ALTER 權限。

搭配回到頁首連結使用的箭頭圖示[Top]

使用 SQL Server Management Studio

若要在索引上設定平行處理原則的最大程度

  1. 在 [物件總管] 中,按一下加號展開資料庫,此資料庫包含您要設定索引之平行處理原則最大程度的資料表。

  2. 展開 [資料表] 資料夾。

  3. 按一下加號展開包含您要設定索引之平行處理原則最大程度的資料表。

  4. 展開 [索引] 資料夾。

  5. 以滑鼠右鍵按一下要設定平行處理原則最大程度的索引,然後選取 [屬性]

  6. [選取頁面] 底下,選取 [選項]

  7. 選取 [平行處理原則的最大程度],然後輸入介於 1 和 64 之間的一些值。

  8. 按一下 [確定]

搭配回到頁首連結使用的箭頭圖示[Top]

使用 Transact-SQL

若要在現有索引上設定平行處理原則的最大程度

  1. [物件總管] 中,連接到 Database Engine 的執行個體。

  2. 在標準列上,按一下 [新增查詢]

  3. 將下列範例複製並貼到查詢視窗中,然後按一下 [執行]

    USE AdventureWorks2012; 
    GO
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.
    */
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor
    REBUILD WITH (MAXDOP=8); 
    GO
    

如需詳細資訊,請參閱<ALTER INDEX (Transact-SQL)>。

在新索引上設定平行處理原則的最大程度

  1. [物件總管] 中,連接到 Database Engine 的執行個體。

  2. 在標準列上,按一下 [新增查詢]

  3. 將下列範例複製並貼到查詢視窗中,然後按一下 [執行]

    USE AdventureWorks2012;
    GO
    CREATE INDEX IX_ProductVendor_NewVendorID 
    ON Purchasing.ProductVendor (BusinessEntityID)
    WITH (MAXDOP=8);
    GO
    

如需詳細資訊,請參閱<CREATE INDEX (Transact-SQL)>。

搭配回到頁首連結使用的箭頭圖示[Top]