max degree of parallelism サーバー構成オプションの構成

適用対象: はいSQL Server (サポートされているすべてのバージョン)

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server の max degree of parallelism (MAXDOP) サーバー構成オプションを構成する方法について説明します。 複数のマイクロプロセッサまたは CPU が搭載されたコンピューターで SQL Server のインスタンスを実行されている場合、並列処理を使用できるかどうかがデータベース エンジンによって検出されます。 並列処理の次数に基づいて、並列プランの実行ごとに、1 つのステートメントを実行するために使用されるプロセッサの数が設定されます。 max degree of parallelism オプションを使用すると、並列プラン実行で使用するプロセッサの数を制限できます。 並列処理の最大限度 (MAXDOP) によって設定される制限の詳細については、このページの「考慮事項」セクションを参照してください。 SQL Server では、クエリ、インデックス データ定義言語 (DDL) の操作、並列挿入、オンライン列変更、並行統計コレクション、静的およびキーセット ドリブン カーソルの作成の場合に並列実行プランが検討されます。

注意

SQL Server 2019 (15.x) では、利用できるプロセッサの数に基づいてインストール プロセスの間に MAXDOP サーバー構成オプションを設定するための自動推奨事項が導入されています。 セットアップのユーザー インターフェイスでは、推奨設定を受け入れることも、独自の値を入力することもできます。 詳細については、「[データベース エンジンの構成] - [MAXDOP] ページ」を参照してください。
ただし、Azure SQL では、新しい 単一データベース、エラスティック プール データベース、マネージド インスタンスの既定の MAXDOP 設定は 8 です。 Azure SQL データベース の MAXDOP の詳細については、「Azure SQL Database での並列処理の最大限度 (MAXDOP) の構成」を参照してください。

はじめに

考慮事項

  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL Server プロフェッショナルだけが変更するようにしてください。

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

  • 並列処理の最大限度 (MAXDOP) を 0 に設定すると、使用可能なすべてのプロセッサ (最大 64 プロセッサ) を SQL Server が使用できます。 しかし、ほとんどの場合、この値は推奨されません。 並列処理の最大限度の推奨値の詳細については、このページの「推奨事項」セクションを参照してください。

  • 並列プランが生成されないようにするには、 max degree of parallelism を 1 に設定します。 1 つのクエリの実行中に使用できるプロセッサ コアの最大数を指定するには、値を 1 - 32,767 に設定します。 使用可能なプロセッサ数よりも多い値を指定すると、実際に使用可能なプロセッサ数が使用されます。 コンピューターにプロセッサが 1 つしか搭載されていない場合、 max degree of parallelism の値は無視されます。

  • 並列処理の最大限度の制限はタスクごとに設定されます。 この設定は、要求ごとまたはクエリ制限ごとではありません。 つまり、並列クエリの実行の間に、1 つの要求で MAXDOP の上限まで複数のタスクが生成されます。各タスクでは 1 つのワーカーと 1 つのスケジューラを使用します。 詳細については、「スレッドおよびタスクのアーキテクチャ ガイド」の 並列タスクのスケジュール に関するセクションを参照してください。

  • 並列処理の最大限度のサーバー構成値をオーバーライドすることができます。

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

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

推奨事項

SQL Server 2016 (13.x) 以降では、サービスの開始中、データベース エンジンの起動時に NUMA ノードまたはソケットあたり 8 個を超える物理コアが検出されると、既定でソフト NUMA ノードが自動的に作成されます。 データベース エンジンにより、同じ物理コアからさまざまなソフト NUMA ノードに論理プロセッサが配置されます。 次の表に示す推奨事項は、並列クエリのすべてのワーカー スレッドを同じソフト NUMA ノード内に保持することを目的としています。 これにより、ワークロードの NUMA ノード間でクエリのパフォーマンスとワーカー スレッドの分布が向上します。 詳細については、「ソフト NUMA」を参照してください。

SQL Server 2016 (13.x) 以降では、max degree of parallelism サーバーの構成値を構成する場合、以下のガイドラインを使用します。

サーバー構成 プロセッサの数 ガイダンス
単一の NUMA ノードを持つサーバー 8 以下の論理プロセッサ MAXDOP を論理プロセッサ数以下に保つ
単一の NUMA ノードを持つサーバー 8 を超える論理プロセッサ MAXDOP を 8 に保つ
複数の NUMA ノードを持つサーバー NUMA ノードあたり 16 以下の論理プロセッサ MAXDOP を NUMA ノードあたりの論理プロセッサ数以下に保つ
複数の NUMA ノードを持つサーバー NUMA ノードあたり 16 を超える論理プロセッサ 最大値を 16 として、MAXDOP を NUMA ノードあたりの論理プロセッサ数の半分に保つ

注意

上の表の NUMA ノードは、SQL Server 2016 (13.x) 以降で自動的に作成されるソフト NUMA ノード、またはソフト NUMA が無効になっている場合はハードウェア ベースの NUMA ノードを表します。
リソース ガバナー ワークロード グループに対して max degree of parallelism オプションを設定する場合は、これらと同じガイドラインを使用します。 詳細については、「CREATE WORKLOAD GROUP (Transact-SQL)」を参照してください。

SQL Server 2008 から SQL Server 2014 (12.x) では、max degree of parallelism サーバーの構成値を構成する場合、以下のガイドラインを使用します。

サーバー構成 プロセッサの数 ガイダンス
単一の NUMA ノードを持つサーバー 8 以下の論理プロセッサ MAXDOP を論理プロセッサ数以下に保つ
単一の NUMA ノードを持つサーバー 8 を超える論理プロセッサ MAXDOP を 8 に保つ
複数の NUMA ノードを持つサーバー NUMA ノードあたり 8 以下の論理プロセッサ MAXDOP を NUMA ノードあたりの論理プロセッサ数以下に保つ
複数の NUMA ノードを持つサーバー NUMA ノードあたり 8 を超える論理プロセッサ MAXDOP を 8 に保つ

セキュリティ

Permissions

パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。 ALTER SETTINGS 権限は、 sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。

SQL Server Management Studio の使用

max degree of parallelism オプションを構成するには

  1. オブジェクト エクスプローラー で、サーバーを右クリックし、 [プロパティ] をクリックします。

  2. [詳細設定] ノードをクリックします。

  3. [並列処理の最大限度] ボックスで、並列プランの実行で使用するプロセッサの最大数を指定します。

Transact-SQL の使用

max degree of parallelism オプションを構成するには

  1. データベース エンジンに接続します。

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

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。 この例では、 sp_configure を使用して、 max degree of parallelism オプションを 16に設定する方法を示します。

USE AdventureWorks2012 ;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

詳細については、「 サーバー構成オプション (SQL Server)」を参照してください。

補足情報: max degree of parallelism オプションを構成した後

新しい設定は、サーバーを再起動しなくてもすぐに有効になります。

参照

ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
affinity mask サーバー構成オプション
サーバー構成オプション (SQL Server)
sp_configure (Transact-SQL)
クエリ処理アーキテクチャ ガイド
スレッドおよびタスクのアーキテクチャ ガイド
並列インデックス操作の構成
クエリ ヒント (Transact-SQL)
インデックス オプションの設定

次のステップ

RECONFIGURE (Transact-SQL) パフォーマンスの監視とチューニング