Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der Zweck für die Verwendung von OPTION (MAXDOP 1) in SQL Server?

Wie Kaboing erwähnte, MAXDOP(n) steuert tatsächlich die Anzahl der CPU-Kerne, die im Abfrageprozessor verwendet werden.

Auf einem vollständig im Leerlauf befindlichen System versucht SQL Server, die Tabellen so schnell wie möglich in den Arbeitsspeicher zu ziehen und sie im Arbeitsspeicher zusammenzuführen. Es könnte sein, dass es in Ihrem Fall am besten ist, dies mit einer einzelnen CPU zu tun. Dies kann denselben Effekt haben wie die Verwendung von OPTION (FORCE ORDER) Dadurch wird der Abfrageoptimierer gezwungen, die von Ihnen angegebene Reihenfolge der Joins zu verwenden. IN manchen Fällen habe ich OPTION (FORCE PLAN) gesehen Reduzieren Sie eine Abfrage von 26 Sekunden auf 1 Sekunde Ausführungszeit.

Books Online sagt weiter, dass mögliche Werte für MAXDOP sind:

0 – Verwendet die tatsächliche Anzahl verfügbarer CPUs abhängig von der aktuellen Systemauslastung. Dies ist der Standardwert und die empfohlene Einstellung.

1 - Unterdrückt die parallele Plangenerierung. Die Operation wird seriell ausgeführt.

2-64 - Begrenzt die Anzahl der Prozessoren auf den angegebenen Wert. Je nach aktueller Auslastung können weniger Prozessoren verwendet werden. Wenn ein Wert größer als die Anzahl verfügbarer CPUs angegeben wird, wird die tatsächliche Anzahl verfügbarer CPUs verwendet.

Ich bin mir nicht sicher, was die beste Verwendung von MAXDOP ist ist, aber ich würde eine Vermutung anstellen und sagen, dass Sie, wenn Sie eine Tabelle mit 8 Partitionen darauf haben, MAXDOP(8) angeben möchten aufgrund von E/A-Beschränkungen, aber ich könnte mich irren.

Hier sind ein paar schnelle Links, die ich über MAXDOP gefunden habe :

Online-Bücher:Grad der Parallelität

Allgemeine Richtlinien zur Konfiguration der MAXDOP-Option