Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
In diesem Artikel wird beschrieben, wie Sie die max degree of parallelism (MAXDOP) Serverkonfigurationsoption in SQL Server mithilfe von 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. Sie können mithilfe der max degree of parallelism-Option die Anzahl der Prozessoren beschränken, die für die Ausführung paralleler Pläne verwendet werden. Ausführlichere Informationen zu den durch den max degree of parallelism 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.
Mit SQL Server 2019 (15.x) wurden automatische Empfehlungen zum Festlegen der Serverkonfigurationsoption max degree of parallelism basierend auf der Anzahl der verfügbaren Prozessoren während des Installationsvorgangs 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-Datenbank, SQL-Datenbank in Fabric und Azure SQL Managed Instance lautet die Standardeinstellung MAXDOP für jede neue einzelne Datenbank, Datenbank in einem elastischen Pool und verwaltete Instanz 8. In der Azure SQL-Datenbank und der SQL-Datenbank in Fabric wird die MAXDOP-Datenbankbereichskonfiguration auf 8 festgelegt. In Azure SQL Managed Instance ist die Serverkonfigurationsoption max degree of parallelism auf 8 festgelegt.
Weitere Informationen zu MAXDOP in Azure SQL-Datenbank oder SQL-Datenbank in Fabric finden Sie unter Konfigurieren des maximalen Parallelitätsgrads (MAXDOP) in Azure SQL-Datenbank und SQL-Datenbank in Fabric.
Considerations
Diese Option ist eine erweiterte Option und sollte nur von einem erfahrenen Datenbankexperten geändert werden.
Wenn die Option „Affinitätsmaske“ 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 von max degree of parallelism auf 0 kann SQL Server alle verfügbaren Prozessoren bis maximal 64 Prozessoren verwenden. 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 degree of parallelism 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 degree of parallelism ignoriert.
Der Grenzwert für den maximalen Parallelitätsgrad wird taskbezogen festgelegt. Dieser Grenzwert gilt nicht pro Anforderung oder pro Abfrage. Dies bedeutet, dass während einer parallelen Abfrageausführung eine einzelne Anfrage mehrere Aufgaben bis zum Grenzwert MAXDOP erzeugen kann, wobei jede Aufgabe einen Worker und einen Scheduler verwendet. 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:
- Auf Abfrageebene durch Verwenden des
MAXDOPAbfragehinweises oder der Abfragespeicher-Hinweise. - Auf Datenbankebene mithilfe der
MAXDOPdatenbankbezogenen Konfiguration. - Auf Workloadebene nutzen Sie die Option
MAX_DOPeiner Workloadgruppe des Ressourcen-Governors.
Indizierungsvorgänge, bei denen ein Index erstellt oder neu erstellt wird oder ein Clustered-Index gelöscht wird, können ressourcenintensiv sein. Sie können den maximalen Grad des Parallelismuswerts für Indexvorgänge überschreiben, indem Sie die MAXDOP Indexoption in der Index-Anweisung angeben. Der MAXDOP Wert wird zur Ausführungszeit auf die Anweisung angewendet und wird nicht in den Indexmetadaten gespeichert. Weitere Informationen finden Sie unter Konfigurieren von Parallelindexvorgängen.
Neben Abfragen und Indexvorgängen steuert diese Option auch die Parallelität von DBCC CHECKTABLE, DBCC CHECKDB und DBCC CHECKFILEGROUP. Sie können parallele Ausführungspläne für diese Anweisungen deaktivieren, indem Sie den Trace-Flag 2528 verwenden. Weitere Informationen finden Sie unter Trace-Flag 2528.
In SQL Server 2022 (16.x) wurde das Feedback zum Grad an Parallelität (Degree of Parallelism, DOP) eingeführt, ein neues Feature, um die Abfrageleistung zu verbessern, indem Parallelitätsineffizienzen basierend auf verstrichener Zeit und Wartezeiten für wiederholte Abfragen identifiziert werden. DOP-Feedback ist Teil der intelligenten Abfrageverarbeitungs-Feature-Familie und richtet sich an die suboptimale Verwendung von Parallelismus bei wiederholten Abfragen. Informationen zum DOP-Feedback finden Sie unter Feedback zum Grad an Parallelität (DOP).
Recommendations
Ab SQL Server 2016 (13.x) werden beim Starten des Diensts standardmäßig automatisch Soft-NUMA-Knoten erstellt, wenn die Datenbank-Engine beim Start 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 (SQL Server).
Befolgen Sie für SQL Server 2016 (13.x) und höhere Versionen die folgenden Richtlinien, wenn Sie den max degree of parallelism-Serverkonfigurationswert konfigurieren:
| Serverkonfiguration | Anzahl der Prozessoren | Guidance |
|---|---|---|
| Server mit einzelnem NUMA-Knoten | Weniger als oder gleich 8 logische Prozessoren | Halten Sie MAXDOP bei oder unter der Anzahl der logischen Prozessoren |
| Server mit einzelnem NUMA-Knoten | Mehr als 8 logische Prozessoren | Behalten Sie MAXDOP bei 8 |
| Server mit mehreren NUMA-Knoten | Weniger als oder gleich 16 logische Prozessoren pro NUMA-Knoten | Halten Sie MAXDOP auf oder unter der Anzahl der logischen Prozessoren pro NUMA-Knoten |
| Server mit mehreren NUMA-Knoten | Mehr als 16 logische Prozessoren pro NUMA-Knoten | Behalten Sie MAXDOP bei der Hälfte der Anzahl der logischen Prozessoren pro NUMA-Knoten, bei einem MAX-Wert von 16. |
Der NUMA-Knoten in der vorherigen 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 ist.
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.
SQL Server 2014 und ältere Versionen
Befolgen Sie für SQL Server 2008 (10.0.x) bis SQL Server 2014 (12.x) die folgenden Richtlinien, wenn Sie den max degree of parallelism-Serverkonfigurationswert konfigurieren:
| Serverkonfiguration | Anzahl der Prozessoren | Guidance |
|---|---|---|
| Server mit einzelnem NUMA-Knoten | Weniger als oder gleich 8 logische Prozessoren | Halten Sie MAXDOP bei oder unter der Anzahl der logischen Prozessoren |
| Server mit einzelnem NUMA-Knoten | Mehr als 8 logische Prozessoren | Behalten Sie MAXDOP bei 8 |
| Server mit mehreren NUMA-Knoten | Weniger als oder gleich 8 logische Prozessoren pro NUMA-Knoten | Halten Sie MAXDOP auf oder unter der Anzahl der logischen Prozessoren pro NUMA-Knoten |
| Server mit mehreren NUMA-Knoten | Mehr als 8 logische Prozessoren pro NUMA-Knoten | Behalten Sie MAXDOP bei 8 |
Permissions
Die Ausführungsberechtigungen für sp_configure ohne Parameter oder nur mit dem ersten Parameter werden standardmäßig allen Benutzern erteilt. Um sp_configure mit beiden Parametern auszuführen und eine Konfigurationsoption zu ändern oder die RECONFIGURE-Anweisung auszuführen, benötigt ein Benutzer die ALTER SETTINGS-Berechtigung auf Serverebene. Die ALTER SETTINGS-Berechtigung ist implizit in den festen Serverrollen sysadmin und serveradmin enthalten.
Verwenden von SQL Server Management Studio
Diese Optionen ändern den MAXDOP für die Instanz.
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die gewünschte Instanz, und wählen Sie Eigenschaften aus.
Wählen Sie den Knoten Erweitert aus.
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
Sie können eine Verbindung mit einer Sql Server-Instanz herstellen, indem Sie ein vertrautes SQL Server-Clienttool verwenden, z. B. sqlcmd, SQL Server Management Studio (SSMS) oder die MSSQL-Erweiterung für Visual Studio Code.
Kopieren Sie das folgende Beispiel, und fügen Sie es in ein Abfragefenster ein, und wählen Sie "Ausführen" aus. In diesem Beispiel wird gezeigt, wie sp_configure verwendet wird, um die Option max degree of parallelism auf 16festzulegen.
USE master;
GO
EXECUTE sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXECUTE sp_configure 'max degree of parallelism', 16;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXECUTE sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO
Weitere Informationen finden Sie unter Serverkonfigurationsoptionen.
Nächste Schritte: Nachdem Sie die Option „maximaler Parallelitätsgrad“ konfiguriert haben
Die Einstellung tritt ohne Neustarten des Servers sofort in Kraft.
Verwandte Inhalte
- Intelligente Abfrageverarbeitung in SQL-Datenbanken
- Leitfaden zur Architektur der Abfrageverarbeitung
- Einrichten von Trace-Flags mit DBCC TRACEON (Transact-SQL)
- Abfragespeicher-Hinweise
- Abfragehinweise (Transact-SQL)
- USE HINT-Abfragehinweis
- ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
- Serverkonfiguration: Affinitätsmaske
- Server-Konfigurationsoptionen
- Handbuch zur Architektur der Abfrageverarbeitung
- Handbuch zur Thread- und Taskarchitektur
- sys.sp_configure (Transact-SQL)
- Festlegen von Indexoptionen
- Rückmeldung zum Grad der Parallelität
- RECONFIGURE (Transact-SQL)
- Überwachen und Optimieren der Leistung
- Konfigurieren von Parallelindexvorgängen