Konfigurieren der Serverkonfigurationsoption Max. Grad an Parallelität

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen)

In diesem Artikel wird beschrieben, wie Sie die Serverkonfigurationsoption Max. Grad an Parallelität (MAXDOP) in SQL Server mit SQL Server Management Studio oder Transact-SQL konfigurieren. Wenn eine Instanz von SQL Server auf einem Computer mit mehreren Mikroprozessoren oder CPUs ausgeführt wird, erkennt die Datenbank-Engine, ob Parallelität verwendet werden kann. Mit dem Grad der Parallelität wird die Anzahl der Prozessoren festgelegt, die zur Ausführung einer einzelnen Anweisung für jede Ausführung paralleler Pläne verwendet werden. Mithilfe der Option Max. Grad an Parallelität kann die Anzahl der Prozessoren beschränkt werden, die bei der Ausführung paralleler Pläne verwendet werden. Weitere Informationen zu den durch den maximalen Grad an Parallelität (MAXDOP) festgelegten Grenzwert finden Sie im Abschnitt Überlegungen auf dieser Seite. SQL Server berücksichtigt die Ausführung paralleler Pläne für Abfragen, DDL-Indizierungsvorgänge (Data Definition Language, DDL), parallele Einfügevorgänge, Onlineausführung von ALTER COLUMN, parallele Sammlung von Statistiken sowie die statische und keysetgesteuerte Cursorauffüllung.

Hinweis

Mit SQL Server 2019 (15.x) wurden automatische Empfehlungen zum Festlegen der MAXDOP-Serverkonfigurationsoption während des Installationsvorgangs basierend auf der Anzahl der verfügbaren Prozessoren eingeführt. Auf der Setupbenutzeroberfläche können Sie entweder die empfohlenen Einstellungen übernehmen oder Ihren eigenen Wert eingeben. Weitere Informationen finden Sie unter Konfiguration der Datenbank-Engine – Seite „MaxDOP“.
In Azure SQL ist die Standardeinstellung MAXDOP für neue Einzeldatenbanken, Pools für elastische Datenbanken und verwaltete Instanzen jedoch auf „8“ festgelegt. Weitere Informationen zu „MAXDOP“ in Azure SQL-Datenbank finden Sie unter Konfigurieren von „Max. Grad an Parallelität" (MAXDOP) in Azure SQL-Datenbank.

Vorbereitungen

Weitere Überlegungen

  • Diese Option ist eine erweiterte Option und sollte ausschließlich von einem erfahrenen Datenbankadministrator oder einem zertifizierten SQL Server -Experten geändert werden.

  • Wenn die Option Affinity Mask nicht auf den Standardwert festgelegt ist, steht SQL Server auf Systemen mit symmetrischem Multiprocessing (SMP) möglicherweise nur eine beschränkte Anzahl an Prozessoren zur Verfügung.

  • Durch das Festlegen des maximalen Parallelitätsgrads (MAXDOP) auf 0 (null) kann SQL Server alle verfügbaren Prozessoren verwenden (bis maximal 64 Prozessoren). Dies ist jedoch in den meisten Fällen nicht der empfohlene Wert. Weitere Informationen zu den empfohlenen Werten für den maximalen Parallelitätsgrad finden Sie im Abschnitt Empfehlungen auf dieser Seite.

  • Legen Sie Max. Grad an Parallelität auf 1 fest, um das Generieren paralleler Pläne zu unterdrücken. Legen Sie den Wert auf eine Zahl zwischen 1 und 32767 fest, um die maximale Anzahl von Prozessorkernen anzugeben, die während einer einzelnen Abfrageausführung verwendet werden können. Wenn ein Wert angegeben wird, der über der Anzahl der verfügbaren Prozessoren liegt, wird die tatsächliche Anzahl der Prozessoren verwendet. Verfügt der Computer nur über einen Prozessor, wird der Wert von Max. Grad an Parallelität ignoriert.

  • Der Grenzwert für den maximalen Parallelitätsgrad wird taskbezogen festgelegt. Es handelt sich nicht um einen anforderungs- oder abfragebezogenen Grenzwert. Dies bedeutet, dass eine einzelne Anforderung während einer parallelen Abfrageausführung mehrere Tasks bis zum Grenzwert MAXDOP erzeugen kann, wobei jeder Task einen Worker und einen Planer nutzt. Weitere Informationen finden Sie im Handbuch zur Thread- und Taskarchitektur im Abschnitt Planen von parallelen Tasks.

  • Sie können den Serverkonfigurationswert für den maximalen Parallelitätsgrad außer Kraft setzen:

  • Indizierungsoperationen, bei denen ein Index erstellt oder neu aufgebaut wird bzw. an deren Ende ein gruppierter Index steht, können ressourcenintensiv sein. In Indizierungsoperationen kann der Wert "Max. Grad an Parallelität" überschrieben werden; geben Sie hierzu die Indexoption MAXDOP in der Indexanweisung an. Der Wert MAXDOP wird zur Ausführungszeit auf die Anweisung angewendet und wird nicht in den Metadaten für den Index gespeichert. Weitere Informationen finden Sie unter Konfigurieren von Parallelindexvorgängen.

  • Neben Abfragen und Indexoperationen steuert diese Option auch die Parallelität von DBCC CHECKTABLE, DBCC CHECKDB und DBCC CHECKFILEGROUP. Sie können Pläne für die parallele Ausführung für diese Anweisungen deaktivieren, und zwar mithilfe des Ablaufverfolgungsflags 2528. Weitere Informationen finden Sie unter Ablaufverfolgungsflags (Transact-SQL).

Empfehlungen

Ab SQL Server 2016 (13.x) werden beim Starten des Diensts standardmäßig automatisch Soft-NUMA-Knoten erstellt, wenn Datenbank-Engine beim Startup mehr als acht physische Kerne pro NUMA-Knoten oder Socket erkennt. Datenbank-Engine platziert logische Prozessoren aus dem gleichen physischen Kern in verschiedene Soft-NUMA-Knoten. Die Empfehlungen in der folgenden Tabelle sollen alle Arbeitsthreads einer parallelen Abfrage innerhalb des gleichen NUMA-Knotens beibehalten. Dies verbessert die Leistung der Abfragen und die Verteilung von Arbeitsthreads in allen NUMA-Knoten für die Workload. Weitere Informationen finden Sie unter Soft-NUMA.

Verwenden Sie ab SQL Server 2016 (13.x) die folgenden Richtlinien beim Konfigurieren des Serverkonfigurationswerts Max. Grad an Parallelität:

Serverkonfiguration Anzahl der Prozessoren Anleitungen
Server mit einzelnem NUMA-Knoten Weniger als oder gleich 8 logische Prozessoren Belassen Sie MAXDOP bei # oder weniger logischen Prozessoren
Server mit einzelnem NUMA-Knoten Mehr als 8 logische Prozessoren Belassen Sie MAXDOP bei 8
Server mit mehreren NUMA-Knoten Weniger als oder gleich 16 logische Prozessoren pro NUMA-Knoten Belassen Sie MAXDOP bei # oder weniger logischen Prozessoren pro NUMA-Knoten
Server mit mehreren NUMA-Knoten Mehr als 16 logische Prozessoren pro NUMA-Knoten Sorgen Sie dafür, dass MAXDOP der Hälfte der logischen Prozessoren pro NUMA-Knoten mit einem MAX-Wert von 16 entspricht.

Hinweis

Der NUMA-Knoten in der obigen Tabelle bezieht sich auf automatisch von SQL Server 2016 (13.x) und höheren Versionen erstellte Soft-NUMA-Knoten oder auf hardwarebasierte NUMA-Knoten, wenn Soft-NUMA deaktiviert wurde.
Verwenden Sie dieselben Richtlinien, wenn Sie die Option „Max. Grad an Parallelität“ für Resource Governor-Arbeitsauslastungsgruppen festlegen. Weitere Informationen finden Sie unter CREATE WORKLOAD GROUP (Transact-SQL).

Verwenden Sie von bis die folgenden Richtlinien beim Konfigurieren des Serverkonfigurationswerts SQL Server 2008Max. Grad an ParallelitätSQL Server 2014 (12.x):

Serverkonfiguration Anzahl der Prozessoren Anleitungen
Server mit einzelnem NUMA-Knoten Weniger als oder gleich 8 logische Prozessoren Belassen Sie MAXDOP bei # oder weniger logischen Prozessoren
Server mit einzelnem NUMA-Knoten Mehr als 8 logische Prozessoren Belassen Sie MAXDOP bei 8
Server mit mehreren NUMA-Knoten Weniger als oder gleich 8 logische Prozessoren pro NUMA-Knoten Belassen Sie MAXDOP bei # oder weniger logischen Prozessoren pro NUMA-Knoten
Server mit mehreren NUMA-Knoten Mehr als 8 logische Prozessoren pro NUMA-Knoten Belassen Sie MAXDOP bei 8

Sicherheit

Berechtigungen

Die Ausführungsberechtigungen für sp_configure ohne Parameter oder nur mit dem ersten Parameter werden standardmäßig allen Benutzern erteilt. Zum Ausführen von sp_configure mit beiden Parametern zum Ändern einer Konfigurationsoption oder zum Ausführen der RECONFIGURE-Anweisung muss einem Benutzer die ALTER SETTINGS-Berechtigung auf Serverebene erteilt worden sein. Die ALTER SETTINGS-Berechtigung ist in den festen Serverrollen sysadmin und serveradmin eingeschlossen.

Verwenden von SQL Server Management Studio

So konfigurieren Sie die Option Max. Grad an Parallelität

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.

  2. Klicken Sie auf den Erweitert -Knoten.

  3. Wählen Sie im Feld Max. Grad an Parallelität die maximale Anzahl der Prozessoren aus, die bei der Ausführung paralleler Pläne verwendet werden sollen.

Verwenden von Transact-SQL

So konfigurieren Sie die Option Max. Grad an Parallelität

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. In diesem Beispiel wird gezeigt, wie sp_configure verwendet wird, um die Option max degree of parallelism auf 16festzulegen.

USE AdventureWorks2012 ;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

Weitere Informationen finden Sie unter Serverkonfigurationsoptionen (SQL Server)angezeigt oder konfiguriert wird.

Nächster Schritt: Nach dem Konfigurieren der Option „Max. Grad an Parallelität“

Die Einstellung tritt ohne Neustarten des Servers sofort in Kraft.

Weitere Informationen

ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
Affinitätsmaske (Serverkonfigurationsoption)
Serverkonfigurationsoptionen (SQL Server)
sp_configure (Transact-SQL)
Leitfaden zur Architektur der Abfrageverarbeitung
Handbuch zur Thread- und Taskarchitektur
Konfigurieren von Parallelindexvorgängen
Abfragehinweise (Transact-SQL)
Festlegen von Indexoptionen

Nächste Schritte

RECONFIGURE (Transact-SQL) Überwachen und Optimieren der Leistung