web-dev-qa-db-ja.com

デフォルトのmaxdopで並列に実行されるクエリ

以下のSQLサーバークエリの動作を理解する必要があります

システムには4つのCPUがあり、ハイパースレッド比は20で、SQLサーバーインスタンスで80の論理プロセッサがカウントされます。

現在、MAXDOPは0、ctopは5です。

これは、すべてのレポートが行われるLSのスタンバイとして機能する読み取り専用インスタンスです。

入ってくるクエリの多くは、並列度64で実行されているように見えます。

質問:.1。論理プロセッサの数が80ではないのに、並列度が80ではないのはなぜですか?

  1. 私の理解は正しいですが、1時間で6つの遅いクエリが実行されている場合、並列度64を示すすべてが同じスレッドにヒットし、cxパケット待機として表示されるため、速度が遅くなることが予想されます。したがって、テストでMAXDOPを16または8に変更すると、完了するために独自のスレッドが提供されると思いますか?

ありがとう

5
BeginnerDBA

単純な答えは、ゼロが指定されている場合、64は DOP制限であるということです

サーバーが並列処理の最大度合いを決定できるようにするには、このオプションをデフォルト値の0に設定します。最大並列度を0に設定すると、SQL Serverは64プロセッサまでの使用可能なすべてのプロセッサを使用できます。

特定の数を設定すると、1つのクエリで64コアを超える数を使用できます(つまり、not zero):

値を1〜32,767の数値に設定して、1回のクエリ実行で使用できるプロセッサコアの最大数を指定します

参照 SQL Server MAX DOP Beyond 64 –それは可能ですか?

SQL Serverがどのようにスレッドを割り当てるかについては、このブログの投稿は公式ドキュメントに最も近いものです。

SQL Server並列クエリ配置決定ロジック

7
Erik Darling