並列インデックス操作の構成Configure Parallel Index Operations

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

このトピックでは、並列処理の最大限度に関する定義と、 SQL Server 2017SQL Server 2017[SQL Server Management Studio]SQL Server Management Studio または Transact-SQLTransact-SQLを使用してこの設定を変更する方法について説明します。This topic defines max degree of parallelism and explains how to modify this setting in SQL Server 2017SQL Server 2017 by using [SQL Server Management Studio]SQL Server Management Studio or Transact-SQLTransact-SQL. SQL ServerSQL Server Enterprise 以上を実行するマルチプロセッサ コンピューターでは、他のクエリと同様に、インデックスのステートメントがこのステートメントに関連付けられているスキャン操作、並べ替え操作、インデックス操作などの実行に、複数のプロセッサを使用する場合があります。On multiprocessor computers that are running SQL ServerSQL Server Enterprise or higher, index statements may use multiple processors to perform the scan, sort, and index operations associated with the index statement just like other queries do. 1 つのインデックス ステートメントの実行に使用されるプロセッサの数は、 max degree of parallelism 構成オプション、現在のワークロード、およびインデックス統計によって決まります。The number of processors used to run a single index statement is determined by the max degree of parallelism configuration option, the current workload, and the index statistics. max degree of parallelism オプションによって、並列プランの実行で使用するプロセッサの最大数が決まります。The max degree of parallelism option determines the maximum number of processors to use in parallel plan execution. SQL Server データベース エンジンSQL Server Database Engine によりシステムがビジー状態であることが検出されると、ステートメントの実行が開始される前に、インデックス操作の並列処理の次数が自動的に削減されます。If the SQL Server データベース エンジンSQL Server Database Engine detects that the system is busy, the degree of parallelism of the index operation is automatically reduced before statement execution starts. データベース エンジンDatabase Engine では、パーティション分割されていないインデックスの先頭のキー列で個々の値の数が制限されている場合や、個々の値の頻度が大きく異なる場合に、並列処理の次数を減らすこともできます。The データベース エンジンDatabase Engine can also reduce the degree of parallelism if the leading key column of a non-partitioned index has a limited number of distinct values or the frequency of each distinct value varies significantly.

注意

並列インデックス操作は、 SQL ServerSQL Server のすべてのエディションで使用できるわけではありません。Parallel index operations are not available in every SQL ServerSQL Server edition. 詳細については、「Features Supported by the Editions of SQL Server 2016 (SQL Server 2016 の各エディションがサポートする機能)」を参照してくださいFor more information, see Features Supported by the Editions of SQL Server 2016

このトピックの内容In This Topic

作業を開始する準備Before You Begin

制限事項と制約事項Limitations and Restrictions

  • 通常は、クエリ オプティマイザーによって使用されるプロセッサ数で、最適なパフォーマンスが得られます。The number of processors that are used by the query optimizer typically provides optimal performance. ただし、非常に大きなインデックスの作成、再構築、または削除などの操作ではリソースが集中的に消費されるので、インデックス操作中に、他のアプリケーションやデータベース操作でリソースが不足する可能性があります。However, operations such as creating, rebuilding, or dropping very large indexes are resource intensive and can cause insufficient resources for other applications and database operations for the duration of the index operation. この問題が発生した場合は、インデックス操作に使用するプロセッサ数を制限することで、インデックス ステートメントの実行に使用される最大プロセッサ数を手動で構成できます。When this problem occurs, you can manually configure the maximum number of processors that are used to run the index statement by limiting the number of processors to use for the index operation.

  • MAXDOP インデックス オプションは、このオプションを指定しているクエリに関してのみ、max degree of parallelism 構成オプションをオーバーライドします。The MAXDOP index option overrides the max degree of parallelism configuration option only for the query specifying this option. 次の表に、max degree of parallelism 構成オプションと MAXDOP インデックス オプションで指定できる有効な整数値を示します。The following table lists the valid integer values that can be specified with the max degree of parallelism configuration option and the MAXDOP index option.

    ReplTest1Value DescriptionDescription
    00 現在のシステム ワークロードに応じて、使用する CPU 数をサーバーが決定するように指定します。Specifies that the server determines the number of CPUs that are used, depending on the current system workload. この値は既定値であり、推奨の設定です。This is the default value and recommended setting.
    11 並列プラン生成を抑制します。Suppresses parallel plan generation. 操作は順番に実行されます。The operation will be executed serially.
    2~642-64 プロセッサ数が指定値まで制限されます。Limits the number of processors to the specified value. 現在のワークロードによっては、使用されるプロセッサ数が少なくなる場合があります。Fewer processors may be used depending on the current workload. 使用できる CPU 数よりも大きな値を指定した場合は、実際に使用できる CPU 数が使用されます。If a value larger than the number of available CPUs is specified, the actual number of available CPUs is used.
  • インデックスの並列実行と MAXDOP インデックス オプションは、次の Transact-SQLTransact-SQL ステートメントに適用されます。Parallel index execution and the MAXDOP index option apply to the following Transact-SQLTransact-SQL statements:

    • CREATE INDEXCREATE INDEX

    • ALTER INDEX REBUILDALTER INDEX REBUILD

    • DROP INDEX (このステートメントは、クラスター化インデックスのみに適用されます。)DROP INDEX (This applies to clustered indexes only.)

    • ALTER TABLE ADD (インデックス) CONSTRAINTALTER TABLE ADD (index) CONSTRAINT

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

  • ALTER INDEX REORGANIZE ステートメントには、MAXDOP インデックス オプションを指定できません。The MAXDOP index option cannot be specified in the ALTER INDEX REORGANIZE statement.

  • クエリ オプティマイザーが構築操作に 2 次以上の並列処理を適用すると、並べ替えを必要とするパーティション インデックス操作に必要なメモリ容量がさらに大きくなる場合があります。Memory requirements for partitioned index operations that require sorting can be greater if the query optimizer applies degrees of parallelism to the build operation. 並列処理の次数が高いと、必要なメモリ容量も大きくなります。The higher the degrees of parallelism, the greater the memory requirement is. 詳細については、「 Partitioned Tables and Indexes」を参照してください。For more information, see Partitioned Tables and Indexes.

セキュリティSecurity

PermissionsPermissions

テーブルまたはビューに対する ALTER 権限が必要です。Requires ALTER permission on the table or view.

SQL Server Management Studio の使用Using SQL Server Management Studio

インデックスに並列処理の最大限度を設定するにはTo set max degree of parallelism on an index

  1. オブジェクト エクスプローラーで、インデックスの並列処理の最大限度を設定するテーブルが格納されているデータベースをプラス記号をクリックして展開します。In Object Explorer, click the plus sign to expand the database that contains the table on which you want to set max degree of parallelism for an index.

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

  3. インデックスの並列処理の最大限度を設定するテーブルをプラス記号をクリックして展開します。Click the plus sign to expand the table on which you want to set max degree of parallelism for an index.

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

  5. 並列処理の最大限度を設定するインデックスを右クリックし、 [プロパティ] を選択します。Right-click the index for which you want to set the max degree of parallelism and select Properties.

  6. [ページの選択][オプション] を選択します。Under Select a page, select Options.

  7. [並列処理の最大限度] を選択し、1 ~ 64 の範囲の値を入力します。Select Maximum degree of parallelism, and then enter some value between 1 and 64.

  8. [OK] をクリックします。Click OK.

Transact-SQL の使用Using Transact-SQL

既存のインデックスに並列処理の最大限度を設定するにはTo set max degree of parallelism on an existing index

  1. オブジェクト エクスプローラーで、 データベース エンジンDatabase Engineのインスタンスに接続します。In Object Explorer, connect to an instance of データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。On the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute.

    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)」を参照してください。For more information, see ALTER INDEX (Transact-SQL).

新しいインデックスに並列処理の最大限度を設定する方法Set max degree of parallelism on a new index

  1. オブジェクト エクスプローラーで、 データベース エンジンDatabase Engineのインスタンスに接続します。In Object Explorer, connect to an instance of データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。On the Standard bar, click New Query.

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。Copy and paste the following example into the query window and click Execute.

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

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