Feedback zum Grad der Parallelität

Gilt für: Gilt für: SQL Server 2022 (16.x) und höhere Versionen, Azure SQL-Datenbank

SQL Server 2022 (16.x) Preview hat ein neues Feature eingeführt, das als Feedback zum Grad der Parallelität (DOP) bezeichnet wird, um die Abfrageleistung zu verbessern, indem Parallelitäts-Ineffizienzen 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. Dieses Szenario trägt zur Optimierung der Ressourcennutzung und der Verbesserung der Skalierbarkeit von Workloads bei, wenn übermäßige Parallelität zu Leistungsproblemen führen kann.

Anstatt sich die Mühe einer allumfassenden Voreinstellung oder manueller Anpassungen bei jeder Abfrage zu machen, passt DOP-Feedback die DOP selbst an, um diese Probleme zu vermeiden.

Weitere Abfrage-Feedback-Features finden Sie unter Feedback zur Speicherzuweisung und Feedback der Kardinalitätsschätzung (Cardinality Estimation, CE).

Feedback zum Grad der Parallelität (DOP) vermeidet übermäßige Parallelität

Anstatt sich die Mühe einer allumfassenden Voreinstellung oder manueller Anpassungen bei jeder Abfrage zu machen, passt DOP-Feedback die DOP selbst an, um übermäßige Parallelität zu vermeiden. Wenn die Parallelitätsnutzung als ineffizient erachtet wird, verringert das DOP-Feedback den DOP für die nächste Ausführung der Abfrage ausgehend vom konfigurierten DOP, und überprüft, ob dies hilfreich war.

Parallelismus eignet sich häufig für Berichte und analytische Abfragen oder Abfragen, in denen ansonsten große Datenmengen verarbeitet werden. Umgekehrt können in OLTP-zentrierten Abfragen, die parallel ausgeführt werden, Leistungsprobleme auftreten, wenn die Zeit, die auf die Koordination aller Bedrohungen verwendet wird, die Vorteile der Verwendung eines parallelen Plans übersteigt. Weitere Informationen finden Sie unter Parallele Planausführung.

  • Um DOP-Feedback zu aktivieren, aktivieren Sie die DOP_FEEDBACK Database Scoped Configuration in einer Datenbank. Beispielsweise in der Benutzerdatenbank:

    ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = ON;
    
  • Um das DOP-Feedback auf Datenbankebene zu deaktivieren, verwenden Sie die DOP_FEEDBACK Database Scoped Configuration. Beispielsweise in der Benutzerdatenbank:

    ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = OFF;
    
  • Um das DOP-Feedback auf Abfrageebene zu deaktivieren, verwenden Sie den Abfragehinweis DISABLE_DOP_FEEDBACK.

Die Abfragespeicher muss für jede Datenbank, in der DOP-Feedback verwendet wird, und im Status „Lese-Schreibzugriff“ aktiviert sein. Feedback wird in der Katalogansicht sys.query_store_plan_feedback beibehalten, wenn ein stabiles Maß an Parallelismusfeedback erreicht worden ist.

DOP-Feedback ist für Abfragen verfügbar, die in der Datenbankkompatibilitätsebene 160 (eingeführt mit SQL Server 2022 (16.x)) oder höher ausgeführt werden.

Nur verifiziertes Feedback wird beibehalten. Wenn die angepasste DOP zu einer Leistungsregression führt, geht DOP-Feedback zurück zur letzten bekannten guten DOP. In diesem Zusammenhang gilt auch eine abgebrochene Abfrage eines Benutzers als Regression. Durch das DOP-Feedback werden Pläne nicht erneut kompiliert.

Stabiles Feedback wird bei der erneuten Kompilierung des Plans erneut überprüft und kann nach oben oder unten angepasst werden, aber nie über der MAXDOP-Einstellung (einschließlich eines MAXDOP-Hinweises) hinaus.

Ab SQL Server 2022 (16.x) ist DOP-Feedback auch für sekundäre Replikate in Verfügbarkeitsgruppen replizierbar, wenn Abfragespeicher für sekundäre Replikate aktiviert ist. DOP-Feedback kann Feedback auf ein primäres Replikat und auf ein sekundäres Replikat unterschiedlich anwenden. DOP-Feedback wird jedoch nicht für sekundäre Replikate beibehalten und beim Failover wird das DOP-Feedback des alten primären Replikats nicht auf das neue primäre Replikat angewendet. Beim Failover geht Feedback, das auf primäre oder sekundäre Replikate angewendet wird, verloren. Weitere Informationen finden Sie unter Abfragespeicher für sekundäre Replikate.

Feedback zum Grad der Parallelität (DOP) – Implementierung

Das Feedback zum Grad der Parallelität (DOP) identifiziert Parallelitäts-Ineffizienzen für wiederholte Abfragen basierend auf verstrichener Zeit und Wartezeiten. Wenn die Parallelitätsnutzung als ineffizient erachtet wird, verringert das DOP-Feedback die DOP für die nächste Ausführung der Abfrage ausgehend von der konfigurierten DOP, und überprüft, ob dies hilfreich war.

Zur Bewertung der Abfrageberechtigung wird die verstrichene Abfragezeit über einige Ausführungen gemessen. Die insgesamt verstrichene Zeit für jede Abfrage wird angepasst, indem Puffer Latch, Puffer-IO und Netzwerk-IO ignoriert werden, die außerhalb der parallelen Abfrageausführung liegen. Das Ziel des DOP-Feedback-Features besteht darin, die Gesamtparallelität zu erhöhen und Wartezeiten erheblich zu reduzieren, auch wenn sich dadurch die verstrichene Abfragezeit leicht erhöht.

Nur verifiziertes Feedback wird beibehalten. Wenn die angepasste DOP zu einer Leistungsregression führt, geht DOP-Feedback zurück zur letzten bekannten guten DOP. In diesem Zusammenhang gilt auch eine abgebrochene Abfrage eines Benutzers als Regression.

Hinweis

DOP-Feedback kompiliert Pläne nicht neu.

Feedback zum Grad der Parallelität (DOP) – Überlegungen

Die Mindest-DOP für jede Abfrage, die mit DOP-Feedback angepasst wird, beträgt 2. Serielle Ausführungen liegen außerhalb der Reichweite für DOP-Feedback.

Feedbackinformationen können mithilfe der Katalogsicht sys.query_store_plan_feedback nachverfolgt werden.

Wenn für eine Abfrage durch den Abfragespeicher ein Abfrageplan erzwungen wird, kann das DOP-Feedback für diese Abfrage weiter verwendet werden.

Derzeit ist DOP-Feedback nicht mit Abfragehinweisen kompatibel. Weitere Informationen finden Sie unter Hinweise (Transact-SQL) – Abfrage und Abfragespeicherhinweise.

Erweiterte Ereignisse für das Feedback zum Grad der Parallelität (DOP)

Die folgenden XEs stehen für das Feedback zum Grad der Parallelität (DoP) zur Verfügung:

  • dop_feedback_eligible_query: Tritt auf, wenn der Abfrageplan für DOP-Feedback infrage kommt. Zusätzliche Ereignisse können ausgelöst werden, wenn ein erneuter Kompilierungs- oder ein SQL Server Instanzneustart auftritt.
  • dop_feedback_provided: Tritt auf, wenn ein DOP-Feedback Daten für eine bestimmte Abfrage bereitgestellt hat. Dieses Ereignis enthält Baseline-Statistiken, wenn Feedback zum ersten Mal bereitgestellt wird, und vorherige Feedbackstatistiken, wenn nachfolgendes Feedback bereitgestellt wird.
  • dop_feedback_validation: Tritt auf, wenn die Validierung für die Abfragelaufzeitstatistiken für eine Baseline- oder vorherige Feedbackstatistiken erfolgt.
  • dop_feedback_stabilized: Tritt auf, wenn DOP-Feedback für eine Abfrage stabilisiert wird.
  • dop_feedback_reverted: Tritt auf, wenn ein DOP-Feedback wiederhergestellt wird. Das Ereignis wird ausgelöst, wenn die Feedbacküberprüfung beim ersten bereitgestellten Feedback fehlschlägt. Das System wird wieder in den Zustand ohne Feedback zurückgesetzt.
  • dop_feedback_analysis_stopped: Tritt auf, wenn die DOP-Feedbackanalyse für eine Abfrage beendet wird.

Feedback zur Beibehaltung des Grades der Parallelität (DOP)

Gilt für: Gilt für: SQL Server 2022 (16.x) und höhere Versionen, Azure SQL-Datenbank

Wenn der DOP-Feedbackmechanismus feststellt, dass der neue Grad an Parallelität gut ist, wird diese Optimierung im Abfragespeicher beibehalten und entsprechend auf eine Abfrage für zukünftige Ausführungen angewendet.

Dieses Feature wurde in SQL Server 2022 (16.x) eingeführt und steht für Abfragen zur Verfügung, die auf dem Datenbank-Kompatibilitätsgrad 160 oder höher, oder den QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n-Hinweis von 160 und höher ausgeführt werden, und wenn Abfragespeicher für die Datenbank aktiviert ist und sich in einem Status „Lese-/Schreibzugriff“ befindet.