Delen via


Hoe Query Store gegevens verzamelt

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-database in Microsoft Fabric Preview

SQL Server Query Store werkt net als een vluchtgegevensrecorder, het voortdurend verzamelen van compileer- en runtimegegevens met betrekking tot query's en plannen. Querygerelateerde gegevens worden bewaard in de interne tabellen en gepresenteerd aan gebruikers via een set weergaven.

Views

In het volgende diagram ziet u Query Store-weergaven en de bijbehorende logische relaties, waarbij tijdgegevens worden gecompileerd die worden weergegeven als blauwe entiteiten:

Query Store-procesweergaven
View descriptions

View Description
sys.query_store_query_text Geeft unieke queryteksten weer die worden uitgevoerd op basis van de database. Opmerkingen en spaties voor en na de querytekst worden genegeerd. Opmerkingen en spaties in tekst worden niet genegeerd. Elke instructie in de batch genereert een afzonderlijke querytekstvermelding.
sys.query_context_settings Biedt unieke combinaties van instellingen die van invloed zijn op het plan waaronder query's worden uitgevoerd. Dezelfde querytekst die wordt uitgevoerd met verschillende instellingen die van invloed zijn op het plan, produceert een afzonderlijke queryvermelding in Query Store omdat context_settings_id deze deel uitmaakt van de querysleutel.
sys.query_store_query Queryvermeldingen die afzonderlijk worden bijgehouden en geforceerd in Query Store. Eén querytekst kan meerdere queryvermeldingen produceren als deze wordt uitgevoerd onder verschillende contextinstellingen of als deze wordt uitgevoerd buiten versus binnen verschillende Transact-SQL modules, zoals opgeslagen procedures en triggers.
sys.query_store_plan Geeft een geschatte planning voor de query weer met de statistieken voor compileertijd. Opgeslagen abonnement is gelijk aan een abonnement dat u krijgt met behulp van SET SHOWPLAN_XML ON.
sys.query_store_runtime_stats_interval Query Store verdeelt tijd in automatisch gegenereerde tijdvensters (intervallen) en slaat geaggregeerde statistieken op voor dat interval voor elk uitgevoerd plan. De grootte van het interval wordt bepaald door de configuratieoptie Verzamelingsinterval voor statistieken (in Management Studio) of INTERVAL_LENGTH_MINUTES met behulp van ALTER DATABASE SET Options (Transact-SQL).
sys.query_store_runtime_stats Geaggregeerde runtimestatistieken voor uitgevoerde plannen. Alle vastgelegde metrische gegevens worden uitgedrukt in de vorm van vier statistische functies: Gemiddelde, Minimum, Maximum en Standaarddeviatie.

Zie de sectie Gerelateerde weergaven, functies en procedures van bewakingsprestaties met behulp van de Query Store voor meer informatie over Query Store-weergaven.

Query processing

Query Store communiceert met de pijplijn voor queryverwerking op de volgende belangrijke punten:

  1. Wanneer een query voor het eerst wordt gecompileerd, worden querytekst en het oorspronkelijke plan verzonden naar Query Store.

  2. Wanneer een query opnieuw wordt gecompileerd, wordt het plan bijgewerkt in Query Store. Als er een nieuw plan wordt gemaakt, voegt Query Store de nieuwe planvermelding voor de query toe en bewaart u de vorige samen met de uitvoeringsstatistieken.

  3. Tijdens de uitvoering van de query worden runtimestatistieken verzonden naar Query Store. Query Store houdt geaggregeerde statistieken nauwkeurig voor elk plan dat binnen het huidige actieve interval is uitgevoerd.

  4. Tijdens het compileren en controleren op hercompilatiefasen bepaalt SQL Server of er een plan is in Query Store dat moet worden toegepast op de query die momenteel wordt uitgevoerd. Als er een geforceerd plan is en het plan in de procedurecache anders is dan het geforceerde plan, wordt de query opnieuw gecompileerd. Dit is in feite dezelfde manier als als planhint is toegepast op die query. Dit proces gebeurt transparant voor de gebruikerstoepassing.

In het volgende diagram ziet u de integratiepunten die in de vorige stappen zijn uitgelegd:

Store-procesquery-store-process-2processorQuery

Remarks

Om I/O-overhead te minimaliseren, worden nieuwe gegevens vastgelegd in het geheugen. Schrijfbewerkingen worden daarna in de wachtrij geplaatst en naar de schijf gespoeld. Query- en plangegevens, weergegeven als Plan Store in het volgende diagram, worden leeggemaakt met minimale latentie. De runtimestatistieken, weergegeven als Runtime Stats, worden gedurende een bepaalde periode in het geheugen bewaard met de DATA_FLUSH_INTERVAL_SECONDS optie van de SET QUERY_STORE instructie. U kunt het dialoogvenster Query Store van Management Studio gebruiken om een waarde in te voeren voor het interval voor het leegmaken van gegevens (minuten), dat intern wordt geconverteerd naar seconden.

Query Store-procesplan

Als het systeem vastloopt of een afsluitbewerking optreedt tijdens het gebruik van traceringsvlag 7745, kan Query Store runtimegegevens verliezen die zijn verzameld maar nog niet zijn behouden, tot een tijdvenster dat is gedefinieerd met DATA_FLUSH_INTERVAL_SECONDS. We raden de standaardwaarde van 900 seconden (15 minuten) aan als een balans tussen de prestaties van query's vastleggen en de beschikbaarheid van gegevens.

Important

De limiet voor maximale grootte (MB) wordt niet strikt afgedwongen. De opslaggrootte wordt alleen gecontroleerd wanneer Query Store gegevens naar schijf schrijft. Dit interval wordt ingesteld door de waarde voor het interval voor het leegmaken van gegevens . Als Query Store de maximale grootte tussen controles van de opslaggrootte heeft overschreden, wordt deze overgezet naar de modus Alleen-lezen. Als de op grootte gebaseerde opschoonmodus is ingeschakeld, wordt het opschoonmechanisme om de maximale groottelimiet af te dwingen ook geactiveerd.

Note

Als het systeem onder geheugendruk staat, kunnen runtimestatistieken eerder dan gedefinieerd op DATA_FLUSH_INTERVAL_SECONDSschijf worden leeggemaakt.

Tijdens het lezen van de Query Store-gegevens worden gegevens in het geheugen en op de schijf transparant geïntegreerd.

Als een sessie wordt beëindigd of de clienttoepassing opnieuw wordt opgestart of vastloopt, worden querystatistieken niet vastgelegd.

Query Store-procesplangegevens

See also

Prestaties bewaken met behulp van de Query Store-
Best practice met Query Store
Query Store-catalogusweergaven (Transact-SQL)