Freigeben über


Serverkonfiguration: cost threshold for parallelism

Gilt für:SQL ServerAzure SQL Managed Instance

In diesem Artikel wird beschrieben, wie die Serverkonfigurationsoption cost threshold for parallelism in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL konfiguriert wird.

Informationen zum Kostenschwellenwert für Parallelität

Die cost threshold for parallelism Option gibt den Schwellenwert an, an dem SQL Server parallele Pläne auf Computern mit mehr als einem logischen Prozessor betrachtet. Die cost threshold for parallelism Option kann auf einen beliebigen Wert von 0 bis 32.767 festgelegt werden.

Die Kosten sind die Summe der geschätzten Operatorkosten in einem Abfrageplan (z. B. CPU und E/A). Es ist ein relatives Maß, das nur für die Planauswahl verwendet wird. die tatsächliche Laufzeit wird nicht gemessen.

Bestimmte Transact-SQL Komponenten können einen parallelen Plan hemmen. Beispiel: Nichtlineable skalare benutzerdefinierte Funktionen (UDFs), Tabellenvariablenänderungen und bestimmte Systemaufrufe. SQL Server wertet parallele Alternativen nur aus, wenn die geschätzten Kosten des besten seriellen Plans den cost threshold for parallelism Wert überschreiten und dann einen günstigeren parallelen Plan auswählen können.

Begrenzungen

SQL Server ignoriert den cost threshold for parallelism-Wert unter den folgenden Bedingungen:

  • Ihr Computer verfügt nur über einen logischen Prozessor.

  • Für SQL Server steht wegen der Konfigurationsoption affinity mask nur ein logischer Prozessor zur Verfügung.

  • Die Konfigurationsoption max degree of parallelism des Servers ist auf 1 eingestellt.

Empfehlungen

Diese Option ist eine erweiterte Option und sollte nur von einem erfahrenen Datenbankexperten geändert werden.

Der Standardwert ist 5, ein Ausgangspunkt und keine Empfehlung. Auf modernen SQL Server-Systemen kann das Erhöhen einer Einstellung dazu beitragen, OLTP-Abfragen mit seriellen Plänen auszuführen. Verwenden Sie kleine Inkremente, und beobachten Sie einen vollständigen Geschäftszyklus, bevor Sie weitere Änderungen vornehmen. Führen Sie bei Bedarf Anwendungstests mit höheren und niedrigeren Werten durch, um die Anwendungsleistung zu optimieren.

Hinweis

In der Azure SQL-Datenbank können Sie nicht festlegen cost threshold for parallelism. Verwenden Sie MAXDOP, um stattdessen Parallelität zu steuern. Weitere Informationen finden Sie unter Ändern des Standard-MAXDOP in azure SQL-Datenbank und in der verwalteten Azure SQL-Instanz.

In bestimmten Fällen kann ein paralleler Plan ausgewählt werden, obwohl die Kosten für den Plan der Abfrage kleiner als der aktuelle cost threshold for parallelism Wert sind. Die Entscheidung, einen parallelen oder seriellen Plan zu verwenden, basiert auf einer Kostenschätzung, die weiter oben im Optimierungsprozess angegeben wurde. Weitere Informationen finden Sie im Handbuch zur Architektur der Abfrageverarbeitung.

Bemerkungen

Um festzustellen, ob die cost threshold for parallelism Serverkonfigurationsoption für Ihre Workload zu hoch oder zu niedrig festgelegt ist, suchen Sie nach den folgenden Indikatoren.

Kostenschwellenwert für Parallelitätseinstellung Description
Zu niedrig - Zu viele CPU-Light-Abfragen werden parallel ausgeführt.

- Im Abfragespeicher sind viele Pläne auf 1 gesetzt.

- CXPACKET und CXCONSUMER beherrschen Die Statistik des Wartetyps. Möglicherweise sehen Sie auch THREADPOOL und SOS_SCHEDULER_YIELD-Wartezeiten.
Zu hoch - Nicht genügend Abfragen der Workload, die CPU-intensiv sind, werden parallel verarbeitet, und infolgedessen ist die CPU-Auslastung höher als optimal.

- SOS_SCHEDULER_YIELD dominiert die Wartetyp-Statistik.

Berechtigungen

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

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

  2. Wählen Sie den Knoten Erweitert aus.

  3. Ändern Sie unter Parallelität die Option cost threshold for parallelism in den gewünschten Wert. Geben Sie einen Wert von 0 bis 32.767 ein, oder wählen Sie diesen aus.

Verwenden von Transact-SQL

In diesem Beispiel wird gezeigt, wie Sie sp_configure verwenden, um den Wert von cost threshold for parallelism auf 20 festzulegen.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'cost threshold for parallelism', 20;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

Weitere Informationen finden Sie unter Serverkonfigurationsoptionen.

Nachverfolgung: Nach dem Konfigurieren der Option „cost threshold for parallelism“

Die Einstellung tritt ohne Neustarten des Servers sofort in Kraft.