共用方式為


設定平行索引作業

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

本文定義平行處理原則的最大程度,並說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中修改此設定。

在執行 SQL Server Enterprise 或更新版本的多處理器系統上,index 陳述式可能會使用多個處理器 (CPU) 來執行與 index 陳述式相關聯的掃描、排序和索引作業,就像其他查詢一樣。 執行單一索引陳述式所用的 CPU 數目是由平行處理原則的最大程度伺服器組態選項、目前的工作負載以及索引統計資料所決定的。

平行處理最大度選項決定執行平行計劃時使用的最大處理器數量。 如果 SQL Server 資料庫引擎偵測到系統忙碌中,在陳述式執行開始之前,會先自動降低索引作業之平行處理原則的程度。 如果非分割索引的主鍵資料行具有數量有限的相異值,或每個相異值的頻率差異顯著,資料庫引擎也可能會降低並行處理的程度。 如需詳細資訊,請參閱查詢處理架構指南

Note

平行索引作業並非在每個 SQL Server 版本中都可用。 如需詳細資訊,請參閱 版本與 SQL Server 2022 支援的功能

局限性

  • 查詢最佳化工具所使用的處理器數目通常可以提供最佳的效能。 然而,諸如建立、重建、卸除非常大的索引都需要大量的資源,並可能在索引作業期間造成其他應用程式和資料庫作業的資源不足。

    當發生此問題時,您可以限制索引作業要使用的處理器數目,藉以手動設定執行索引陳述式要使用的最大處理器數目。

  • MAXDOP index 選項只會針對指定此選項的查詢置換平行處理原則的最大配置選項。 下表列出可以使用最大平行處理度配置選項和 MAXDOP 索引選項指定的有效整數值。

    Value Description
    0 指定伺服器會根據目前的系統工作負載來決定所使用的 CPU 數目。 這是預設值且為建議的設定。
    1 抑制平行計劃方案的生成。 作業會循序執行。
    2-64 將處理器的數目限制成指定的值。 根據現行工作量,可能會使用較少的處理器。 如果指定的值大於可用的 CPU 個數,就會使用實際可用的 CPU 個數。
  • 平行索引執行和 MAXDOP 索引選項適用於下列 Transact-SQL 陳述式:

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

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

權限

必須具備資料表或檢視的 ALTER 權限。

使用 SQL Server Management Studio

設定索引的最大平行度上限

  1. 在 [物件總管] 中,選取加號以展開包含您要為索引設定平行處理原則上限之資料表的資料庫。

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

  3. 選取加號以展開您想要設定索引最大平行處理度的表格。

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

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

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

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

  8. 請選擇 [確定]

使用 Transact-SQL

設定現有索引的平行處理度上限

  1. 物件總管中,連線到資料庫引擎的一個執行個體。

  2. 在標準列上,選取 [新增查詢]

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此程式碼會 IX_ProductVendor_VendorID 變更資料表上的 Purchasing.ProductVendor 索引,以便如果伺服器有八個以上處理器,資料庫引擎會將索引作業的執行限制為八個或更少的處理器。

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX IX_ProductVendor_VendorID
        ON Purchasing.ProductVendor REBUILD WITH(MAXDOP = 8);
    GO
    

如需詳細資訊,請參閱 ALTER INDEX

建立新索引時設定最大平行度

  1. 物件總管中,連線到資料庫引擎的一個執行個體。

  2. 在標準列上,選取 [新增查詢]

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

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