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
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-Datenbank in Microsoft Fabric
Die Funktionsweise des SQL Server-Abfragespeichers ähnelt der von Flugdatenschreibern. Kompilierungs- und Laufzeitinformationen zu Abfragen und Plänen werden durchgehend erfasst. Daten, die sich auf Abfragen beziehen, werden in internen Tabellen gespeichert und Benutzern in mehreren Sichten angezeigt.
Views
Das folgende Diagramm zeigt Abfragespeichersichten und ihre logischen Beziehungen, wobei Kompilierzeitinformationen als blaue Entitäten dargestellt werden:
Beschreibungen anzeigen
| View | Description |
|---|---|
| sys.query_store_query_text | Stellt eindeutige Abfragetexte dar, die in der Datenbank ausgeführt wurden. Kommentare und Leerzeichen vor und nach dem Abfragetext werden ignoriert. Kommentare und Leerzeichen im Text werden nicht ignoriert. Jede Anweisung im Batch generiert einen separaten Abfragetexteintrag. |
| sys.query_context_settings | Stellt eindeutige Kombinationen planrelevanter Einstellungen dar, unter denen Abfragen ausgeführt werden. Derselbe Abfragetext, der mit unterschiedlichen plandeterminierenden Einstellungen ausgeführt wird, erzeugt einen separaten Abfrageeintrag im Abfragespeicher, da context_settings_id Teil des Abfrageschlüssels ist. |
| sys.query_store_query | Abfragen, die im Abfragespeicher separat erfasst und erzwungen werden. Ein einzelner Abfragetext kann mehrere Abfrageeinträge generieren, wenn er unter unterschiedlichen Kontexteinstellungen bzw. außerhalb oder innerhalb verschiedener Transact-SQL-Module (z. B. gespeicherte Prozeduren und Trigger) ausgeführt wird. |
| sys.query_store_plan | Stellt den geschätzten Plan für die Abfrage mit den Kompilierzeitstatistiken dar. Der gespeicherte Plan entspricht einem Plan, den Sie durch die Verwendung von SET SHOWPLAN_XML ON erhalten würden. |
| sys.query_store_runtime_stats_interval | Der Abfragespeicher trennt die Zeit in automatisch generierte Zeitfenster (Intervalle) und speichert aggregierte Statistiken für jeden ausgeführten Plan auf diesem Intervall. Die Größe des Intervalls wird durch das Konfigurationsoption Statistics Collection Interval (in Management Studio) oder INTERVAL_LENGTH_MINUTES mithilfe ALTER DATABASE SET von Optionen (Transact-SQL) gesteuert. |
| sys.query_store_runtime_stats | Aggregierte Laufzeitstatistiken für ausgeführte Pläne. Alle erfassten Metriken werden in Form von 4 Statistikfunktionen ausgedrückt: Mittelwert, Minimum, Maximum und Standardabweichung. |
Weitere Informationen zu Abfragespeichersichten finden Sie im Abschnitt „Zugehörige Sichten, Funktionen und Prozeduren“ in Leistungsüberwachung mit dem Abfragespeicher.
Abfrageverarbeitung
Der Abfragespeicher interagiert an den folgenden wichtigen Punkten mit der Abfrageverarbeitungspipeline:
Wenn eine Abfrage zum ersten Mal kompiliert wird, werden der Abfragetext und der ursprüngliche Plan an den Abfragespeicher gesendet.
Wenn eine Abfrage neu kompiliert wird, wird der Plan im Abfragespeicher aktualisiert. Wenn ein neuer Plan erstellt wird, fügt der Abfragespeicher den neuen Planeintrag für die Abfrage ein und behält die vorherigen Pläne zusammen mit deren Ausführungsstatistiken bei.
Bei der Abfrageausführung werden Laufzeitstatistiken an den Abfragespeicher gesendet. Der Abfragespeicher sorgt für genaue aggregierte Statistiken für jeden Plan, der innerhalb des aktuell aktiven Intervalls ausgeführt wurde.
Während der Kompilierung und Prüfung für Neukompilierungsphasen ermittelt SQL Server, ob sich im Abfragespeicher ein Plan befindet, der auf die aktuell ausgeführte Abfrage angewendet werden sollte. Wenn ein erzwungener Plan vorliegt, und der Plan im Prozedurcache sich vom erzwungenen Plan unterscheidet, wird die Abfrage neu kompiliert. Dies entspricht der gleichen Vorgehensweise, die angewendet wird, wenn PLAN HINT auf die Abfrage angewendet wurde. Dieser Vorgang erfolgt transparent in der Benutzeranwendung.
Im folgenden Diagramm werden die Integrationspunkte aus den vorherigen Schritten dargestellt:
Remarks
Zur Minimierung des E/A-Aufwands werden neue Daten im Speicher erfasst. Schreibvorgänge werden in eine Warteschlange gestellt und anschließend auf den Datenträger geschrieben. Abfrage- und Planinformationen, die im folgenden Diagramm als „Plan Store“ (Planspeicher) angezeigt werden, werden mit minimaler Latenz geleert. Die Laufzeitstatistiken, die als „Runtime Stats“ angezeigt werden, werden für einen Zeitraum im Arbeitsspeicher gespeichert, der mit der DATA_FLUSH_INTERVAL_SECONDS-Option der SET QUERY_STORE-Anweisung festgelegt wird. Sie können im Abfragespeicher-Dialogfeld von Management Studio einen Wert für Datenflushintervall (Minuten) eingeben, der intern in Sekunden umgerechnet wird.
Wenn das System abstürzt oder heruntergefahren wird, während das Ablaufverfolgungsflag 7745 verwendet wird, kann der Abfragespeicher in einem mit DATA_FLUSH_INTERVAL_SECONDS definierten Zeitraum Laufzeitdaten verlieren, die zwar erfasst, aber noch nicht gespeichert wurden. Der Standardwert von 900 Sekunden (15 Minuten) wird empfohlen, um ein Gleichgewicht zwischen der Abfrageerfassungsleistung und der Datenverfügbarkeit zu erzielen.
Important
Der Grenzwert Maximale Größe (MB) wird nicht erzwungen. Die Speichergröße wird nur überprüft, wenn der Abfragespeicher Daten auf einen Datenträger schreibt. Das Intervall wird durch den Wert von Datenleerungsintervall festgelegt. Wenn Abfragespeicher zwischen den Überprüfungen der Speichergröße die maximale Größenbeschränkung überschritten hat, wechselt es in den schreibgeschützten Modus. Bei Aktivierung von Größenbasierter Bereinigungsmodus wird auch der Bereinigungsmechanismus zum Erzwingen der maximalen Größe ausgelöst.
Note
Wenn das System unter Speicherdruck steht, können Laufzeitstatistiken früher auf den Datenträger geschrieben werden, als in DATA_FLUSH_INTERVAL_SECONDS definiert.
Beim Lesen der Query-Store-Daten werden im Arbeitsspeicher befindliche und auf dem Datenträger gespeicherte Daten transparent zusammengeführt.
Wenn eine Sitzung beendet oder die Clientanwendung neu gestartet wird oder abstürzt, werden keine Abfragestatistiken aufgezeichnet.
Siehe auch
Überwachen der Leistung mit dem Abfragespeicher
Bewährte Methode für den Abfragespeicher
Abfragespeicherkatalogansichten (Transact-SQL)