SQL Server における 「並列処理の最大限度」構成オプションの推奨事項、およびガイドライン

適用対象: SQL Server 2008SQL Server 2008 R2SQL Server 2012

概要


[Microsoft SQL Server の並列処理の次数の最大値(MAXDOP) 構成] オプションでは、並列プランでクエリの実行に使用されるプロセッサの数を制御します。このオプションでは、並行作業を実行するクエリ プランの演算子を使用するスレッドの数を決定します。かどうか SQL Server の設定によって対称型マルチプロセッシング (SMP) コンピューター、一様でないメモリ アクセス (NUMA) のコンピューター、またはプロセッサのハイパー スレッドが有効なので、並列処理の最大限度] オプションを適切に構成するのにはあります。この資料では、 sp_configureシステム ストアド プロシージャを使用する場合に SQL Server の並列処理の最大限度] オプションを構成するために使用できる一般的なガイドラインについて説明します。OPTION (MAXDOP) Transact SQL のクエリ ヒントは、クエリは、このオプションを指定した場合、 sp_configureの値で、並列処理の最大限度] オプションをオーバーライドできます。SQL Server 2008 およびそれ以降のバージョンでは、MAXDOP 値は、リソース ガバナーを使用して構成された値を超えた場合、データベース エンジンはリソース ガバナーの MAXDOP 値を使用します。MAXDOP クエリ ヒントを使用する場合、並列処理の最大限度オプションを使用するすべてのセマンティクスの規則が適用されます。他の 2 つのオプションをオーバーライドしたり、MAXDOP 設定には影響は次のとおりです。
  • ソフト NUMA
  • 並列インデックス操作

並列処理の最大限度の構成オプションでは、SQL Server を使用するプロセッサの数は制限されません。SQL Server を使用するプロセッサの数を構成するには、アフィニティ マスクの構成オプションを使用します。

MAXDOP 設定は、計画 (例: クラスター化インデックス スキャン) の各演算子に適用されます。各ステップは、1 つの CPU または MAXDOP との間に何もしないが指定されている Cpu の数を使用します。計画の複数の演算子は並列で同時に実行した場合、クエリによって使用されるスレッドの合計数は、MAXDOP 設定を指定を超える可能性があります。

詳細情報


並列処理の次数の最大値を手動で構成は、プロセッサのレイアウトと同様に、NUMA ノードの論理プロセッサの数によって異なります。SQL Server が開始されると、SQL の OS の起動プロセスが認識され、使用されるプロセッサのレイアウトを印刷します。

動的管理ビューの sys.dm_os_sys_info と sys.dm_os_nodes は、SQL Server によって使用されるプロセッサの数と SQL Server によって認識されている NUMA ノードの数についても使用できます。

SQL Server 2016 (13.x) 以上

データベース エンジンは、NUMA ノードまたは起動時に、ソケットごとの 8 つ以上の物理コアを検出した場合、サービスの起動時に SQL Server 2016 (13.x) から始まるソフト NUMA ノードに自動的に既定で作成します。データベース エンジンの別のソフト NUMA ノードに同一の物理コアの論理プロセッサを配置することによって行われます。次の表の推奨事項は、同じソフト NUMA ノード内で並列クエリのすべてのワーカー スレッドを保持することを目的としたが。これが向上、クエリのパフォーマンスとワーカ ・ スレッドの分布、ワークロードの NUMA ノード間で。

並列処理の最大限度サーバーの構成の値を構成するとき、次のガイドラインを使用して SQL Server 2016 (13.x) から始めて。

1 つの NUMA ノードを使用してサーバー 8 個の論理プロセッサが MAXDOP を論理プロセッサの数以下に保つ
1 つの NUMA ノードを使用してサーバー 8 個の論理プロセッサよりも大きい MAXDOP を 8 にしてください。
複数の NUMA ノードを使用してサーバー 以上、16 個の論理プロセッサを 1 つの NUMA ノード MAXDOP を 1 つの NUMA ノードの論理プロセッサの数の下に保つ
複数の NUMA ノードを使用してサーバー NUMA ノードごとに 16 個の論理プロセッサよりも大きい 16 の最大値を持つ 1 つの NUMA ノードの論理プロセッサの数の半分で MAXDOP を保持します。

注: 上記の表の NUMA ノードは、SQL Server 2016 (13.x) と上位のバージョンによって自動的に作成ソフト NUMA ノードを参照します。ワークロード グループの並列処理のオプションのリソース ・ ガバナーの最大の度合いを設定するときは、この同じガイドラインを使用します。詳細については、「ワークロード グループ (Transact SQL) 作成をします。

2014 (12.x) の SQL Server に SQL Server 2008

並列処理の最大限度サーバーの構成の値を構成すると、SQL Server 2008 年から SQL Server 2014 (12.x)、次のガイドラインを使用します。

1 つの NUMA ノードを使用してサーバー 論理プロセスが 8 以下 MAXDOP を論理プロセッサの数以下に保つ
1 つの NUMA ノードを使用してサーバー 8 個の論理プロセッサよりも大きい MAXDOP を 8 にしてください。
複数の NUMA ノードを使用してサーバー

8 個の論理プロセッサを 1 つの NUMA ノード以下

MAXDOP を 1 つの NUMA ノードの論理プロセッサの数の下に保つ
複数の NUMA ノードを使用してサーバー NUMA ノードごとに 8 個の論理プロセッサよりも大きい MAXDOP を 8 にしてください。

これらのガイドラインに記載されている 8 の最大値は、SQL Server の一般的な活動とは、並列クエリ プランで使用する交換演算子のオーバーヘッドに適用されます。特定のアプリケーションのパターンと SQL Server のインスタンスを並行処理によって、この最大値を変更できます。たとえば、次の状況を考慮してください。

  • 非常に少数のプロセッサの数と比較して同時に実行しているクエリがある場合より大きな値を MAXDOP 値を設定できます。たとえば、MAXDOP 値を 16 に設定できます。
  • 場合する、非常に多数のプロセッサの数と比較して同時に実行しているクエリ、MAXDOP 値を設定するには小さい値にします。たとえば、MAXDOP 値を 4 に設定できます。

メモ使用を検討する任意の値必要があります徹底的に比較する特定のアプリケーションのアクティビティまたはクエリのパターン運用サーバーでその値を実装する前に。

追加情報