Max. Grad an Parallelität (Max Degree of Parallelism)

Bei Multi-Prozessor-Systemen ist das Parallelisieren von Abfragen über mehrere Prozessoren von Nachteil, da es sehr teuer ist, einen Thread von einem (physikalischen) Prozessor auf einen anderen zu transferieren, da beide Prozessoren in NUMA (Non-Unified Memory Access)-Systemen keinen gemeinsamen Speicher haben und somit der Speicher des Threads von einem zum anderen Prozessor transferiert werden muss, was zeitintensiv ist.

Bei Verwendung der neuen AMD Epic-Prozessoren wird diese Einstellung in Zukunft auch wichtig.

Um den Transfer eines Verarbeitungsthreads von einem auf den anderen Prozessor zu vermeiden, muss man die Einstellung „Max Degree of Parallelism“ auf den jeweiligen Server abstimmen. Handelt es sich zum Beispiel bei den im Server verbauten Prozessoren um zwei Quad-Core-Prozessoren welche Hyperthreading unterstützen, ist die Parallelitätseinstellung auf 8 zu setzen. Dieser Wert ergibt sich aus den vier physikalischen zuzüglich der vier virtuellen Cores welche von jeweils einem Prozessor zur Verfügung gestellt werden. Für die Datenbankengine bedeutet diese Einstellung, dass ein Abfrage maximal auf acht Threads aufgeteilt werden, welche dann auch alle auf einem physikalischen Prozessor abgearbeitet werden.

Server mit einem physikalischen Prozessor

Anzahl der Prozessoren empfohlene Einstellung
Weniger als 8 logische Prozessoren Eisntellung auf Anzahl der verfügbaren Threads
Mehr als 8 logische Prozessoren Eisntellung auf 8

Server mit mehr als einem physikalischen Prozessor

Anzahl der Prozessoren empfohlene Einstellung
Weniger als 8 logische Prozessoren pro NUMA-Knoten Eisntellung auf Anzahl der verfügbaren Threads
Mehr als 8 logische Prozessoren pro NUMA-Knoten Eisntellung auf 8

Weiterführende Artikel