web-dev-qa-db-ja.com

値<= 8と比較した0のMAXDOP値

私はMAXDOPに関して数十のサイトを調査してきましたが、基本的な何かが欠けているようです。 MAXDOP = 0を指定すると、SQLは使用可能なすべてのCPUを使用できるようになります。 MSの推奨設定では、MAXDOP = 8未満の場合はCPUの数を設定し、8以上のCPUの場合はMAXDOP = 8を設定します(注:NUMAなどの細かい点がありますが、これは基本的なガイダンスです)。 MAXDOP = 0はすべてのCPUを有効にし、システムに8個以下のCPUがある場合、MAXDOP = 0の設定はMAXDOP =#CPUの設定とどのように異なりますか?それらは両方ともすべてのx CPUが利用可能になるのではないですか? CPUの数> 8の場合、これが完全に理にかなっていることがわかります。

ありがとう!

1
Ken

MAXDOP = 0を指定すると、SQLは使用可能なすべてのCPUを使用できるようになります。 -これは、64個までの論理プロセッサに当てはまります。 128を超える場合でも、MAXDOp = 0は64の論理プロセッサのみを使用します。

コア<= 8の場合、ハイパースレッディングが有効になっているかどうかを確認する必要があります。これもここで重要な要素です。

また、単一のnumaで8以下のコアの場合、理想的には混乱が生じる場所であるプロセッサーの数を維持するように求められます。今日の世界では、8コア未満で問題が発生し、MAxDOPの設定を検討している場合、より大きな問題が発生するため、このようなサーバーを見つけることは非常にまれです。

しかし、はい、8つ未満の場合も同じです。ただし、そのMAXDOPに設定されている場合でも、クエリプロセスはすべてのコアを使用する場合と使用しない場合があることに注意してください。また、この設定は並列処理のコストしきい値と並行してチェックする必要があります

1
KASQLDBA