Dela via


Så samlar Query Store in data

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-databas i Förhandsversion av Microsoft Fabric

SQL Server Query Store fungerar ungefär som en inspelare för flygdata och samlar ständigt in kompilerings- och körningsinformation relaterad till frågor och planer. Frågerelaterade data sparas i de interna tabellerna och presenteras för användarna via en uppsättning vyer.

Views

Följande diagram visar Query Store-vyer och deras logiska relationer, med kompileringstidsinformation som presenteras som blå entiteter:

Query Store-processvyer
View descriptions

View Description
sys.query_store_query_text Presenterar unika frågetexter som körs mot databasen. Kommentarer och blanksteg före och efter frågetexten ignoreras. Kommentarer och blanksteg i text ignoreras inte. Varje instruktion i batchen genererar en separat frågetextpost.
sys.query_context_settings Visar unika kombinationer av inställningar som påverkar planen under vilka frågor körs. Samma frågetext som körs med olika inställningar som påverkar planen skapar en separat frågepost i Query Store eftersom context_settings_id den är en del av frågenyckeln.
sys.query_store_query Frågeposter som spåras och tvingas separat i Query Store. En enskild frågetext kan generera flera frågeposter om den körs under olika kontextinställningar eller om den körs utanför eller i olika Transact-SQL moduler, till exempel lagrade procedurer och utlösare.
sys.query_store_plan Visar en uppskattad plan för frågan med tidsstatistiken för kompilering. Lagrad plan motsvarar en som du får med hjälp SET SHOWPLAN_XML ONav .
sys.query_store_runtime_stats_interval Query Store delar in tid i automatiskt genererade tidsfönster (intervall) och lagrar aggregerad statistik för det intervallet för varje utförd plan. Intervallets storlek styrs av konfigurationsalternativet Statistics Collection Interval (i Management Studio) eller INTERVAL_LENGTH_MINUTES med hjälp av ALTER DATABASE SET Options (Transact-SQL).
sys.query_store_runtime_stats Sammanställd körningsstatistik för utförda planer. Alla insamlade mått uttrycks i form av fyra statistikfunktioner: Genomsnitt, Minimum, Maximum och Standardavvikelse.

Mer information om Query Store-vyer finns i avsnittet "Relaterade vyer, funktioner och procedurer" i Övervaka prestanda med hjälp av Query Store.

Query processing

Query Store interagerar med frågebearbetningspipelinen på följande viktiga punkter:

  1. När en fråga kompileras för första gången skickas frågetext och den första planen till Query Store.

  2. När en fråga kompileras om uppdateras planen i Query Store. Om en ny plan skapas lägger Query Store till den nya planposten för frågan och behåller de tidigare tillsammans med deras körningsstatistik.

  3. Vid frågekörningen skickas körningsstatistik till Query Store. Query Store håller aggregerad statistik korrekt för varje plan som kördes inom det aktiva intervallet.

  4. Under kompilering och sökning efter omkompileringsfaser avgör SQL Server om det finns en plan i Query Store som ska tillämpas för den fråga som körs. Om det finns en tvingad plan och planen i procedurens cache skiljer sig från den framtvingade planen, kompileras frågan om. Detta är i praktiken på samma sätt som om PLAN HINT tillämpades på frågan. Den här processen sker transparent för användarprogrammet.

Följande diagram visar integrationspunkterna som beskrivs i föregående steg:

Query Store-process

Remarks

För att minimera I/O-omkostnaderna samlas nya data in i minnet. Skrivåtgärder placeras i kö och töms till disk efteråt. Fråge- och planinformation, som visas som Plan Store i följande diagram, töms med minimal svarstid. Körningsstatistiken, som visas som Körningsstatistik, sparas i minnet under en tidsperiod som definierats med DATA_FLUSH_INTERVAL_SECONDS alternativet för -instruktionen SET QUERY_STORE . Du kan använda dialogrutan Management Studio Query Store för att ange ett värde för dataspolningsintervall (minuter), som konverteras internt till sekunder.

Query Store-processplan

Om systemet kraschar eller en avstängning inträffar när spårningsflaggan 7745 används kan Query Store förlora körningsdata som har samlats in men ännu inte sparats, upp till ett tidsfönster som definierats med DATA_FLUSH_INTERVAL_SECONDS. Vi rekommenderar standardvärdet 900 sekunder (15 minuter) som en balans mellan frågeinsamlingsprestanda och datatillgänglighet.

Important

Maxstorleksgränsen (MB) tillämpas inte strikt. Lagringsstorleken kontrolleras endast när Query Store skriver data till disk. Det här intervallet anges av dataspolningsintervallvärdet . Om Query Store har överskridit den maximala storleksgränsen mellan kontroller av lagringsstorlek övergår det till skrivskyddat läge. Om storleksbaserat rensningsläge är aktiverat utlöses även rensningsmekanismen för att framtvinga den maximala storleksgränsen.

Note

Om systemet är under minnesbelastning kan körningsstatistik rensas till disken tidigare än vad som definierats med DATA_FLUSH_INTERVAL_SECONDS.

Under läsningen av Query Store-data är minnesintern och på disk-data enhetliga transparent.

Om en session avslutas eller klientprogrammet startas om eller kraschar registreras inte frågestatistik.

Processplansinformation för Query Store

See also

Övervakning av prestanda med hjälp av Query Store
Bästa praxis med Query Store
katalogvyer för Query Store (Transact-SQL)