次の方法で共有


並列インデックス操作の構成

このトピックでは、並列処理の最大限度を定義し、SQL Server Management Studio または Transact-SQL を使用して SQL Server 2014 でこの設定を変更する方法について説明します。 SQL Server Enterprise 以降を実行しているマルチプロセッサ コンピューターでは、他のクエリと同様に、インデックス ステートメントで複数のプロセッサを使用して、インデックス ステートメントに関連付けられたスキャン、並べ替え、およびインデックス操作を実行できます。 1 つのインデックス ステートメントの実行に使用されるプロセッサの数は、並列処理の 最大次数 構成オプション、現在のワークロード、およびインデックス統計によって決まります。 並列処理の最大次数オプションは、並列プランの実行で使用するプロセッサの最大数を決定します。 SQL Server データベース エンジンでシステムがビジー状態であることが検出された場合、ステートメントの実行が開始される前に、インデックス操作の並列処理の程度が自動的に低下します。 また、非パーティション インデックスの先頭キー列に個別の値の数が限られている場合や、各個別の値の頻度が大きく異なる場合、データベース エンジンは並列処理の程度を下げることもできます。

並列インデックス操作は、すべての SQL Server エディションで使用できるわけではありません。 詳しくは「 Features Supported by the Editions of SQL Server 2014」をご覧ください。

このトピックについて

開始する前に

制限事項と制約条件

  • クエリ オプティマイザーで使用されるプロセッサの数は、通常、最適なパフォーマンスを提供します。 ただし、非常に大きなインデックスの作成、再構築、削除などの操作は、リソースを大量に消費するため、インデックス操作の間、他のアプリケーションやデータベース操作ではリソースが不足する可能性があります。 この問題が発生した場合は、インデックス操作に使用するプロセッサの数を制限することで、インデックス ステートメントの実行に使用されるプロセッサの最大数を手動で構成できます。

  • MAXDOP インデックス オプションは、このオプションを指定するクエリに対してのみ、並列処理の最大次数構成オプションをオーバーライドします。 次の表に、並列処理の最大次数構成オプションと MAXDOP インデックス オプションで指定できる有効な整数値を示します。

    価値 説明
    0 現在のシステム ワークロードに応じて、サーバーが使用される CPU の数を決定することを指定します。 これが既定値であり、推奨される設定です。
    1 並列プラン生成を抑制します。 操作は順次実行されます。
    2 ~ 64 プロセッサの数を指定した値に制限します。 現在のワークロードによっては、使用できるプロセッサの数が少なくなります。 使用可能な CPU の数より大きい値を指定すると、使用可能な CPU の実際の数が使用されます。
  • 並列インデックス実行と MAXDOP インデックス オプションは、次の Transact-SQL ステートメントに適用されます。

    • インデックスを作成

    • ALTER INDEX REBUILD

    • DROP INDEX (これはクラスター化インデックスにのみ適用されます)。

    • テーブルを変更し、(インデックス)制約を追加

    • ALTER TABLE DROP (クラスター化インデックス) CONSTRAINT

  • ALTER INDEX REORGANIZE ステートメントでは、MAXDOP 索引オプションを指定できません。

  • クエリ オプティマイザーがビルド操作に並列処理の度合いを適用する場合、並べ替えを必要とするパーティション インデックス操作のメモリ要件が大きくなる可能性があります。 並列処理のレベルが高いほど、メモリ要件は大きくなります。 詳細については、「 Partitioned Tables and Indexes」を参照してください。

安全

権限

テーブルまたはビューに対する ALTER 権限が必要です。

SQL Server Management Studio の使用

インデックスの並列処理の最大限度を設定するには

  1. オブジェクト エクスプローラーで、プラス記号をクリックして、インデックスの並列処理の最大限度を設定するテーブルを含むデータベースを展開します。

  2. [テーブル] フォルダーを展開します。

  3. プラス記号をクリックして、インデックスの並列処理の最大限度を設定するテーブルを展開します。

  4. [インデックス] フォルダーを展開します。

  5. 並列処理の最大次数を設定するインデックスを右クリックし、[プロパティ] を選択 します

  6. [ ページの選択] で [ オプション] を選択します。

  7. [並列処理の最大次数] を選択し、1 ~ 64 の値を入力します。

  8. OK をクリックします。

Transact-SQL の使用

既存のインデックスに並列処理の最大限度を設定するには

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  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. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。

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

詳細については、「 CREATE INDEX (Transact-SQL)」を参照してください。