Erfassen von Daten im AbfragespeicherHow Query Store collects data

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance JaAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse AnalyticsAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance JaAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

Die Funktionsweise des SQL Server-Abfragespeichers ähnelt der von Flugdatenschreibern. Kompilierungs- und Laufzeitinformationen zu Abfragen und Plänen werden durchgehend erfasst.SQL Server Query Store works much like a flight data recorder, constantly collecting compile and runtime information related to queries and plans. Daten, die sich auf Abfragen beziehen, werden in internen Tabellen gespeichert und Benutzern in mehreren Sichten angezeigt.Query-related data is persisted in the internal tables and presented to users through a set of views.

SichtenViews

Das folgende Diagramm zeigt Abfragespeichersichten und ihre logischen Beziehungen, wobei Kompilierzeitinformationen als blaue Entitäten dargestellt werden:The following diagram shows Query Store views and their logical relationships, with compile time information presented as blue entities:

Sichten des AbfragespeicherprozessesQuery Store process views
SichtbeschreibungenView descriptions

SichtView BESCHREIBUNGDescription
sys.query_store_query_textsys.query_store_query_text Stellt eindeutige Abfragetexte dar, die in der Datenbank ausgeführt wurden.Presents unique query texts executed against the database. Kommentare und Leerzeichen vor und nach dem Abfragetext werden ignoriert.Comments and spaces before and after the query text are ignored. Kommentare und Leerzeichen im Text werden nicht ignoriert.Comments and spaces inside text aren't ignored. Jede Anweisung im Batch generiert einen separaten Abfragetexteintrag.Every statement in the batch generates a separate query text entry.
sys.query_context_settingssys.query_context_settings Stellt eindeutige Kombinationen von Einstellungen dar, die sich auf Pläne auswirken, mit denen Abfragen ausgeführt werden.Presents unique combinations of plan-affecting settings under which queries are executed. Derselbe Abfragetext, der mit unterschiedlichen Einstellungen zur Planauswirkung ausgeführt wurde, erzeugt separate Abfrageeinträge im Abfragespeicher, da context_settings_id Teil des Abfrageschlüssels ist.The same query text executed with different plan-affecting settings produces a separate query entry in Query Store because context_settings_id is part of the query key.
sys.query_store_querysys.query_store_query Abfrageeinträge, die im Abfragespeicher separat nachverfolgt und erzwungen werden.Query entries that are tracked and forced separately in Query Store. Ein einzelner Abfragetext kann mehrere Abfrageeinträge generieren, wenn er unter unterschiedlichen Kontexteinstellungen bzw. außerhalb oder innerhalb verschiedener Transact-SQLTransact-SQL-Module (z. B. gespeicherte Prozeduren und Trigger) ausgeführt wird.A single query text can produce multiple query entries if it's executed under different context settings or if it's executed outside versus inside different Transact-SQLTransact-SQL modules, such as stored procedures and triggers.
sys.query_store_plansys.query_store_plan Stellt den geschätzten Plan für die Abfrage mit den Kompilierzeitstatistiken dar.Presents estimated plan for the query with the compile time statistics. Der gespeicherte Plan entspricht einem Plan, den Sie durch die Verwendung von SET SHOWPLAN_XML ON erhalten würden.Stored plan is equivalent to one that you get by using SET SHOWPLAN_XML ON.
sys.query_store_runtime_stats_intervalsys.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.Query Store divides time into automatically generated time windows (intervals) and stores aggregated statistics on that interval for every executed plan. Die Größe des Intervalls wird durch die Konfigurationsoption Statistiksammlungsintervall (in Management StudioManagement Studio) oder durch INTERVAL_LENGTH_MINUTES mithilfe von ALTER DATABASE SET-Optionen (Transact-SQL) gesteuert.The size of the interval is controlled by the configuration option Statistics Collection Interval (in Management StudioManagement Studio) or INTERVAL_LENGTH_MINUTES using ALTER DATABASE SET Options (Transact-SQL).
sys.query_store_runtime_statssys.query_store_runtime_stats Aggregierte Laufzeitstatistiken für ausgeführte Pläne.Aggregated runtime statistics for executed plans. Alle erfassten Metriken werden in Form von vier statistischen Funktionen ausgedrückt: Average, Minimum, Maximum und Standard Deviation (Durchschnitt, Maximum, Minimum, Standardabweichung)All captured metrics are expressed in the form of four statistic functions: Average, Minimum, Maximum, and Standard Deviation.

Weitere Informationen zu Abfragespeichersichten finden Sie im Abschnitt „Zugehörige Sichten, Funktionen und Prozeduren“ in Leistungsüberwachung mit dem Abfragespeicher.For more information on Query Store views, see the "Related Views, Functions, and Procedures" section of Monitoring performance by using the Query Store.

AbfrageverarbeitungQuery processing

Der Abfragespeicher interagiert an den folgenden wichtigen Punkten mit der Abfrageverarbeitungspipeline:Query Store interacts with the query processing pipeline at the following key points:

  1. Wenn eine Abfrage zum ersten Mal kompiliert wird, werden der Abfragetext und der ursprüngliche Plan an den Abfragespeicher gesendet.When a query gets compiled for the first time, query text and the initial plan are sent to Query Store.

  2. Wenn eine Abfrage neu kompiliert wird, wird der Plan im Abfragespeicher aktualisiert.When a query gets recompiled, the plan is updated in Query Store. 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.If a new plan is created, Query Store adds the new plan entry for the query and keeps the previous ones along with their execution statistics.

  3. Bei der Abfrageausführung werden Laufzeitstatistiken an den Abfragespeicher gesendet.Upon the query execution, runtime statistics are sent to Query Store. Der Abfragespeicher sorgt für genaue aggregierte Statistiken für jeden Plan, der innerhalb des aktuell aktiven Intervalls ausgeführt wurde.Query Store keeps aggregated statistics accurate for every plan that was executed within the currently active interval.

  4. Während der Kompilierung und Prüfung für Neukompilierungsphasen ermittelt SQL ServerSQL Server, ob sich im Abfragespeicher ein Plan befindet, der auf die aktuell ausgeführte Abfrage angewendet werden sollte.During the compile and check for recompile phases, SQL ServerSQL Server determines if there's a plan in Query Store that should be applied for the currently running query. Wenn ein erzwungener Plan vorliegt, und der Plan im Prozedurcache sich vom erzwungenen Plan unterscheidet, wird die Abfrage neu kompiliert.If there's a forced plan and the plan in the procedure cache is different than the forced plan, the query gets recompiled. Dies entspricht der gleichen Vorgehensweise, die angewendet wird, wenn PLAN HINT auf die Abfrage angewendet wurde.This is effectively the same way as if PLAN HINT was applied to that query. Dieser Vorgang erfolgt transparent in der Benutzeranwendung.This process happens transparently to the user application.

Im folgenden Diagramm werden die Integrationspunkte aus den vorherigen Schritten dargestellt:The following diagram depicts the points of integration explained in the previous steps:

AbfragespeicherprozessQuery Store process

BemerkungenRemarks

Zur Minimierung des E/A-Aufwands werden neue Daten im Speicher erfasst.To minimize I/O overhead, new data is captured in-memory. Schreibvorgänge werden in eine Warteschlange eingereiht und danach auf den Datenträger entleert.Write operations are queued and flushed to disk afterwards. Abfrage- und Planinformationen, die im folgenden Diagramm als „Plan Store“ (Planspeicher) angezeigt werden, werden mit minimaler Latenz geleert.Query and plan information, shown as Plan Store in the following diagram, are flushed with minimal latency. Die Laufzeitstatistiken (angezeigt als „Runtime Stats“) verbleiben solange wie die DATA_FLUSH_INTERVAL_SECONDS-Option der SET QUERY_STORE-Anweisung im Arbeitsspeicher.The runtime statistics, shown as Runtime Stats, are kept in memory for a period of time defined with the DATA_FLUSH_INTERVAL_SECONDS option of the SET QUERY_STORE statement. Sie können das Dialogfeld des Management StudioManagement Studio-Abfragespeichers verwenden, um einen Wert für Datenleerungsintervall (Minuten) einzugeben, der intern in Sekunden konvertiert wird.You can use the Management StudioManagement Studio Query Store dialog box to enter a value for Data Flush Interval (Minutes), which is internally converted to seconds.

Plan für den AbfragespeicherprozessQuery Store process plan

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.If the system crashes or a shutdown occurs while using trace flag 7745, Query Store can lose runtime data that has been collected but not yet persisted, up to a time window defined with DATA_FLUSH_INTERVAL_SECONDS. Der Standardwert von 900 Sekunden (15 Minuten) wird empfohlen, um ein Gleichgewicht zwischen der Abfrageerfassungsleistung und der Datenverfügbarkeit zu erzielen.We recommend the default value of 900 seconds (15 minutes) as a balance between query capture performance and data availability.

Wichtig

Der Grenzwert Maximale Größe (MB) wird nicht erzwungen.The Max Size (MB) limit isn't strictly enforced. Die Speichergröße wird nur überprüft, wenn der Abfragespeicher Daten auf einen Datenträger schreibt.Storage size is checked only when Query Store writes data to disk. Das Intervall wird durch den Wert von Datenleerungsintervall festgelegt.This interval is set by the Data Flush Interval value. Wenn der Abfragespeicher die maximale Größe zwischen Speichergrößenüberprüfungen überschritten hat, geht er in den schreibgeschützten Modus über.If Query Store has breached the maximum size limit between storage size checks, it transitions to read-only mode. Bei Aktivierung von Größenbasierter Bereinigungsmodus wird auch der Bereinigungsmechanismus zum Erzwingen der maximalen Größe ausgelöst.If Size Based Cleanup Mode is enabled, the cleanup mechanism to enforce the maximum size limit is also triggered.

Hinweis

Wenn eine Arbeitsspeicherauslastung des Systems auftritt, können Laufzeitstatistiken früher auf den Datenträger geleert werden als durch DATA_FLUSH_INTERVAL_SECONDS definiert.If the system is under memory pressure, runtime statistics can be flushed to disk earlier than defined with DATA_FLUSH_INTERVAL_SECONDS.

Während die Abfragespeicherdaten gelesen werden, werden arbeitsspeicherinterne und auf dem Datenträger gespeicherte Daten transparent zusammengeführt.During the read of the Query Store data, in-memory and on-disk data are unified transparently.

Wenn eine Sitzung beendet oder die Clientanwendung neu gestartet wird oder abstürzt, werden keine Abfragestatistiken aufgezeichnet.If a session is terminated or the client application restarts or crashes, query statistics won't be recorded.

Informationen zum Plan für den AbfragespeicherprozessQuery Store process plan information

Weitere InformationenSee also

Überwachen der Leistung mit dem AbfragespeicherMonitoring performance by using the Query Store
Bewährte Methode für den AbfragespeicherBest practice with Query Store
Katalogsichten des Abfragespeichers (Transact-SQL)Query Store Catalog Views (Transact-SQL)