Blog
Thursday, 21. July 2022

SQL Server 2022 New Features: Query store hints

Kristóf
IT-Consultant

Einstieg

Anknüpfend an einige bisherige Artikel dieser Reihe, stellen wir Ihnen heute wieder ein neues Feature aus dem SQL Server 2022 Release vor. Konkret behandeln wir das Thema Query Store Hints. Was es damit auf sich hat und wie Sie von diesem neuen Feature profitieren können, beschreiben wir in dem folgenden Artikel.

Hinweise zum Abfragespeicher

Query Store Hints bieten eine benutzerfreundliche Methode zum Gestalten von Abfrageplänen, ohne den Anwendungscode zu ändern. Sie sind als eine Art Vorschaufunktion in SQL Server 2022 (16.x) Preview zu verstehen. Das neue Feature ist sowohl in Azure SQL Datenbanken, als auch in Azure SQL Managed Instances verfügbar.

Idealerweise wählt der Abfrageoptimierer einen passenden Ausführungsplan für eine Abfrage aus. Wenn dies nicht der Fall ist, nimmt in der Regel ein Entwickler oder DBA eine manuelle Optimierung für bestimmte Bedingungen vor. Abfragehinweise werden über die OPTION-Klausel angegeben und können verwendet werden, um das Verhalten der Abfrageausführung zu beeinflussen. Obwohl Abfragehinweise dazu beitragen, lokalisierte Lösungen für verschiedene leistungsbezogene Probleme bereitzustellen, erfordern sie eine Neufassung des ursprünglichen Abfragetexts. Jedoch sind Datenbankadministratoren und -Entwickler nicht immer in der Lage, Änderungen direkt am T-SQL-Code vorzunehmen, um einen Abfragehinweis einzufügen. Das T-SQL kann fest in eine Anwendung codiert oder automatisch von der Anwendung generiert werden.

Wann Hinweise zum Abfragespeicher verwendet werden sollten
Der Abfragespeicher ermöglicht die Erfassung von Abfragen, Ausführungsplänen und zugehörigen Laufzeitstatistiken. Der in SQL Server 2016 (13.x) eingeführte und in Azure SQL-Datenbank standardmäßig aktivierte Abfragespeicher vereinfacht die allgemeine Leistungsoptimierung für Kunden erheblich.

Mainzer Datenfabrik - SQL Server 2022 New Features: Query store hints

Beispiele, bei denen Hinweise aus dem Abfragespeicher bei Leistungsproblemen auf Abfrageebene hilfreich sein können:

  • Begrenzen Sie die Speicherzuweisungsgröße für einen Masseneinfügungsvorgang.
  • Begrenzen Sie den maximalen Parallelitätsgrad für eine Statistikaktualisierungsoperation.
  • Verwenden Sie einen Hash-Join anstelle eines Joins mit verschachtelten Schleifen.
  • Verwenden Sie den Kompatibilitätsgrad 110 für eine bestimmte Abfrage, während alles andere in der Datenbank auf dem Kompatibilitätsgrad 150 gehalten wird.
  • Deaktivieren Sie die Zeilenzieloptimierung für eine SELECT TOP-Abfrage.

So verwenden Sie Hinweise zum Abfragespeicher

-> Identifizieren Sie die query_id des Abfragespeichers der Abfrageanweisung, die Sie ändern möchten. Sie können dies auf verschiedene Arten tun:

  • Abfragen der Katalogansichten des Abfragespeichers.
  • Verwenden von in SQL Server Management Studio integrierten Abfragespeicherberichten.
  • Verwenden von Query Performance Insight für Azure SQL-Datenbank im Azure-Portal.

-> Führen Sie sys.sp_query_store_set_hints mit der query_id und der Abfragehinweiszeichenfolge aus, die Sie auf die Abfrage anwenden möchten. Diese Zeichenfolge kann einen oder mehrere Abfragehinweise enthalten.

Wichtige Informationen: Einmal erstellte Query Store Hints bleiben erhalten und überdauern Neustarts und Failover. Hinweise aus dem Abfragespeicher überschreiben codierte Hinweise auf Anweisungsebene und vorhandene Planhinweise.

Fakten

  • Wenn beim Erstellen eines Query Store Hints kein Hinweis für eine bestimmte query_id vorhanden ist, wird ein neuer erstellt.
  • Wenn beim Erstellen oder Aktualisieren eines Query Store Hints bereits ein Hinweis für eine bestimmte query_id vorhanden ist, überschreibt der zuletzt angegebene Wert zuvor angegebene Werte für diese Abfrage.
  • Wenn die query_id nicht vorhanden ist, wird ein Fehler ausgelöst.

Um mit einer query_id verknüpfte Hinweise zu entfernen, verwenden Sie:

sys.sp_query_store_clear_hints

Query Store Hints - bewährte Praktiken

Schließen Sie die Index- und Statistikpflege ab, bevor Sie Abfragen für potenzielle neue Query Store-Hinweise auswerten.

Testen Sie Ihre Anwendungsdatenbank auf der neuesten Kompatibilitätsebene, bevor Sie die Query Store Hints nutzen. Beispielsweise wurde die Parameter Sensitive Plan (PSP)-Optimierung in SQL Server 2022 (Kompatibilitätsebene 160) eingeführt, die mehrere aktive Pläne pro Abfrage nutzt, um ungleichmäßige Datenverteilungen zu überwachen. Wenn Ihre Umgebung nicht die neueste Kompatibilitätsebene verwenden kann, können Query Store Hints mit dem RECOMPILE-Hinweis auf jeder unterstützenden Kompatibilitätsebene genutzt werden.

Query Store Hints setzen das Verhalten des SQL Server-Abfrageplans außer Kraft. Es wird empfohlen sie dann zu verwenden, wenn es notwendig ist, um leistungsbezogene Probleme zu beheben.

Wir empfehlen Query Store Hints, Statement Level Hints, Plan Guides und Query Store Forced Plans bei jeder Änderung der Datenverteilung und bei Datenbankmigrationen neu zu evaluieren. Änderungen in der Datenverteilung können dazu führen, dass Query Store Hints suboptimale Ausführungspläne erzeugen.

Query Performance Insight in Azure SQL Database

Wenn Sie Query Store in Azure SQL Database ausführen, können Sie Query Performance Insights verwenden, um den Ressourcenverbrauch zu analysieren. Während Sie das SQL Server Management Studio und Azure Data Studio verwenden, um den detaillierten Ressourcenverbrauch für alle Ihre Abfragen zu erhalten, wie z. B. CPU, Speicher und I/O, bietet Ihnen Query Performance Insight eine schnelle und effiziente Möglichkeit, deren Auswirkungen auf den gesamten DTU-Verbrauch für Ihre Datenbank zu bestimmen.

Hinweis: Query Performance Insight setzt voraus, dass der Abfragespeicher in Ihrer Datenbank aktiv ist. Er ist standardmäßig für alle Datenbanken in Azure SQL Database aktiviert. Wenn Query Store nicht läuft, werden Sie im Azure-Portal aufgefordert, ihn zu aktivieren.

Mainzer Datenfabrik - SQL Server 2022 New Features: Query store hints

Wie man es benutzt

  • Öffnen Sie das Azure-Portal und suchen Sie eine Datenbank, die Sie untersuchen möchten.
  • Öffnen Sie im Menü auf der linken Seite Intelligent Performance > Query Performance Insight.
Mainzer Datenfabrik - SQL Server 2022 New Features: Query store hints
  • Auf der ersten Registerkarte sehen Sie die Liste der ressourcenintensivsten Abfragen.
  • Wählen Sie eine einzelne Abfrage aus, um Details sehen zu können.
  • Öffnen Sie Intelligente Leistung > Leistungsempfehlungen und prüfen Sie, ob Leistungsempfehlungen verfügbar sind.
  • Verwenden Sie Schieberegler oder Zoom-Symbole, um das beobachtete Intervall zu ändern.
Mainzer Datenfabrik - SQL Server 2022 New Features: Query store hints

Um Empfehlungen zur Datenbankleistung zu erhalten, wählen Sie auf der Navigationsleiste Query Performance Insight die Option Empfehlungen.

Mainzer Datenfabrik - SQL Server 2022 New Features: Query store hints

Fazit

Query Store Hints sind eine großartige Ergänzung für in Azure gehostete SQL-Datenbanken. Durch die Kombination mit Query Performance Insight, kann die Leistung erheblich verbessert werden. Diese beiden Tools zusammen können Ihr Gesamtverständnis für Ihre Abfragen erheblich verbessern. Sie machen die Überwachung und Analyse der Leistung Ihrer Abfragen deutlich flüssiger.

Gerne stehen Ihnen unsere Experten bei der Konfiguration oder auch bei Rückfragen zu diesem neuen Feature in SQL Server 2022 mit Rat und Tat zur Seite. Kontaktieren Sie uns gerne für weitere Informationen oder unverbindliche Beratungsgespräche über unser Kontaktformular.

Interesse geweckt?

Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.

Kontaktieren Sie uns gerne über das Kontaktformular und vereinbaren ein unverbindliches Beratungsgespräch mit unseren Berater:innen zur Bedarfsevaluierung. Gemeinsam optimieren wir Ihre Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!

Taunusstraße 72
55118 Mainz
info@madafa.de
+49 6131 3331612
Bürozeiten
Montag bis Donnerstag:
9:00 - 17:00 Uhr MEZ

Freitags:
9:30 - 14:00 Uhr MEZ
Wir sind Ihre SQL Expert:innen!
Noch Fragen? - Wir haben immer die passende Antwort für Sie!