Was bedeutet es, viele Zeilen für eine SPID in sp_who2 zu haben?

7

Ich laufe sp_who2 activeauf Box Box und bekomme mehrere Zeilen pro einzelne SPID. Zum Beispiel siehe unten. Bedeutet dies, dass SQL Server die Abfrage in 23 parallele Unterabfragen unterteilt hat? Wenn dies der Fall ist, warum wird die MaxDegreeOfParallelism-Einstellung von 8 ignoriert? Oder ist das etwas anderes?

Geben Sie hier die Bildbeschreibung ein

AngryHacker
quelle

Antworten:

11

Warum wird die MaxDegreeOfParallelism-Einstellung von 8 ignoriert?

Dies liegt daran, dass MAXDOP pro Operator und nicht pro Ausführungsplan erfolgt . Stellen Sie Ihre MAXDOP-Einstellung auf einen guten Wert ein .

Die Einstellung MAXDOP wird verwendet, um die Anzahl der Threads pro Operation im Ausführungsplan zu begrenzen, und begrenzt nicht die Anzahl der Threads, die zum Ausführen der Abfrage verwendet werden. Daher ist es normal, Threads pro SPID in Systemprozessen zu sehen, die größer als die MAXDOP-Einstellung sind.

Siehe auch Funktionsweise: SQL Server pro Abfrage Parallelitätsgrad Anzahl der Mitarbeiter

Als Randnotiz: Verwenden Sie sp_whoIsActive - es gibt viele Optionen und verwendet DMVs

- sp_who2 ist Legacy, verwendet alte veraltete Tabellen und wurde während der Eiszeit 1995/11/03 10:16 geschrieben :-)

Kin Shah
quelle