max degree of parallelism オプション

複数のマイクロプロセッサまたは CPU が搭載されているコンピューター上で SQL Server を実行するときは、並列処理の最適な程度、つまり各並列プラン実行で 1 つのステートメントを実行するために使用するプロセッサの数が検出されます。max degree of parallelism オプションを使用すると、並列プラン実行で使用するプロセッサの数を制限できます。既定値の 0 に設定した場合、使用可能なプロセッサがすべて (最大 64 個の CPU) 使用されます。並列プランの生成を中止するには、max degree of parallelism を 1 に設定します。単一クエリの実行で使用されるプロセッサの最大数を制限するには、2 以上の値 (最大 64) を設定します。使用可能なプロセッサ数より大きな値を指定すると、実際の使用可能なプロセッサ数が使用されます。コンピューターにプロセッサが 1 つしか搭載されていない場合、max degree of parallelism の値は無視されます。

max degree of parallelism の上書き

SQL Server は、クエリ、インデックス データ定義言語 (DDL) の操作、静的およびキーセット ドリブン カーソルの作成の場合に並列実行プランを検討します。並列実行の詳細については、「並列処理の次数」を参照してください。

クエリ ステートメントに MAXDOP クエリ ヒントを指定して、クエリの max degree of parallelism 値を上書きできます。詳細については、「クエリ ヒント (Transact-SQL)」を参照してください。

インデックスを作成または再構築したり、クラスター化インデックスを削除するインデックス操作には、リソースを集中して使用するものがあります。インデックス ステートメントの MAXDOP インデックス オプションを指定して、インデックス操作の max degree of parallelism 値を上書きできます。MAXDOP 値は実行時にステートメントに適用され、インデックス メタデータには保存されません。詳細については、「並列インデックス操作の構成」を参照してください。

クエリおよびインデックスの操作だけでなく、このオプションも DBCC CHECKTABLE、DBCC CHECKDB、および DBCC CHECKFILEGROUP の並列処理を制御します。トレース フラグ 2528 を使用して、これらのステートメントの並列実行プランを無効にすることができます。詳細については、「トレース フラグ (Transact-SQL)」を参照してください。

注意注意

affinity mask オプションを既定値に設定していないと、対称型多重処理 (SMP) システムで SQL Server が使用できるプロセッサの数が制限されることがあります。

max degree of parallelism オプションの設定

max degree of parallelism は拡張オプションです。sp_configure システム ストアド プロシージャを使用して max degree of parallelism の設定を変更するには、show advanced options を 1 に設定する必要があります。新しい設定は、MSSQLSERVER サービスを再起動しなくてもすぐに有効になります。

次の例では、max degree of parallelism オプションを 8 に設定します。

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 8;
GO
RECONFIGURE WITH OVERRIDE;
GO

SQL Server Management Studio の max degree of parallelism 値の設定方法の詳細については、「並列クエリに使用可能なプロセッサ数を構成する方法 (SQL Server Management Studio)」を参照してください。