Utforska Query Store

Slutförd

SQL Server Query Store är en funktion per databas som automatiskt registrerar en historik över frågor, planer och körningsstatistik, vilket förenklar prestandafelsökning och frågejustering. Det ger också insikter om databasanvändningsmönster och resursförbrukning.

Query Store består av tre butiker:

  • Planlagring: Lagrar information om uppskattad körningsplan.
  • Statistiklager för körning: Lagrar information om körningsstatistik.
  • Väntestatistikarkiv: Bevarar information om väntestatistik.

Skärmbild av Query Store-komponenterna.

Aktivera Query Store

Query Store är aktiverat som standard i Azure SQL-databaser. Om du vill använda den med SQL Server och Azure Synapse Analytics måste du aktivera den först. Om du vill aktivera funktionen Query Store använder du följande fråga som är giltig för din miljö:

-- SQL Server
ALTER DATABASE <database_name> SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

-- Azure Synapse Analytics
ALTER DATABASE <database_name> SET QUERY_STORE = ON;

Hur Query Store samlar in data

Query Store integreras med frågebearbetningspipelinen i flera steg. Vid varje integreringsplats samlas data in i minnet och skrivs till disken asynkront för att minimera I/O-omkostnaderna. Integreringspunkterna är följande:

  1. När en fråga körs för första gången skickas dess frågetext och den första uppskattade körningsplanen till Frågearkivet och sparas.

  2. Planen uppdateras i Query Store när en fråga kompileras om. Om omkompilen resulterar i en nyligen genererad körningsplan finns den även kvar i Query Store för att utöka de tidigare planerna. Dessutom håller Query Store reda på körningsstatistiken för varje frågeplan i jämförelsesyfte.

  3. Under kompilering och sökning efter omkompileringsfaser identifierar Query Store om det finns en tvingad plan för att frågan ska köras. Frågan omkompileras om Query Store tillhandahåller en tvingad plan som skiljer sig från planen i procedurens cache.

  4. När en fråga körs finns dess körningsstatistik kvar i Query Store. Query Store aggregerar dessa data för att säkerställa en korrekt representation av varje frågeplan.

Skärmbild av frågearkivets integreringspunkter i frågeexekveringspipelinen som visas som ett flödesdiagram.

Mer information om hur Query Store samlar in data finns i Hur Query Store samlar in data.

Vanliga scenarier

SQL Server Query Store ger värdefulla insikter om prestanda för databasåtgärder. Vanliga scenarier är:

  • Identifiera och åtgärda prestandaregressioner på grund av sämre val av frågekörningsplan.
  • Identifiera och justera frågor om högsta resursförbrukning.
  • A/B-testning för att utvärdera effekterna av databas- och programändringar.
  • Säkerställa prestandastabilitet efter SQL Server-uppgraderingar.
  • Fastställa de vanligaste frågorna.
  • Granska historiken för frågeplaner för en fråga.
  • Identifiera och förbättra oplanerade arbetsbelastningar.
  • Förstå vanliga väntekategorier i en databas och de bidragande frågor och planer som påverkar väntetiderna.
  • Analysera databasanvändningsmönster över tid när det gäller resursförbrukning (CPU, I/O, Minne).

Identifiera Query Store-vyerna

När Query Store har aktiverats på en databas visas mappen Query Store för databasen i Object Explorer. För Azure Synapse Analytics visas Query Store-vyerna under Systemvyer. Query Store-vyerna ger aggregerade, snabba insikter om prestandaaspekterna i SQL Server-databasen.

Skärmbild av S S M S Object Explorer med frågearkivvyerna markerade.

Regredierade frågor

En regresserad fråga upplever prestandaförsämring över tid på grund av ändringar i körningsplanen. Uppskattade körningsplaner kan ändras på grund av olika faktorer, till exempel schemaändringar, statistikändringar och indexändringar. Att undersöka procedurens cache kan vara den första instinkten, men den lagrar bara den senaste körningsplanen för en fråga, och planer kan avlägsnas baserat på systemets minnesbehov. Query Store bevarar dock flera körningsplaner för varje fråga, vilket ger flexibiliteten att välja en specifik plan genom att planen tvingar att hantera regression av frågeprestanda som orsakas av planändringar.

Vyn Regresserade frågor kan identifiera frågor vars körningsmått regresserar på grund av ändringar i körningsplanen över en angiven tidsram. Den här vyn tillåter filtrering baserat på ett valt mått (till exempel varaktighet, CPU-tid, radantal med mera) och en statistik (total, medelvärde, min, max eller standardavvikelse). Sedan visas de 25 vanligaste regresserade frågorna baserat på det angivna filtret. Som standard visas en grafisk stapeldiagramvy över frågorna, men du kan också visa frågorna i rutnätsformat.

När du har valt en fråga i frågefönstret längst upp till vänster visar sammanfattningsfönstret för planen de beständiga frågeplaner som är associerade med frågan över tid. Om du väljer en frågeplan i fönstret Plansammanfattning visas en grafisk frågeplan i det nedre fönstret. Med knappar i verktygsfältet i både fönstret plansammanfattning och grafisk frågeplan kan du framtvinga den valda planen för den valda frågan. Den här fönsterstrukturen och beteendet används konsekvent i alla SQL Query-vyer.

Skärmbild av vyn Regresserade frågor i Query Store som visar var och en av de olika fönstren.

Du kan också använda den sp_query_store_force_plan lagrade proceduren för att använda plantvingande.

EXEC sp_query_store_force_plan @query_id=73, @plan_id=79

Övergripande resursförbrukning

Vyn Övergripande resursförbrukning gör det möjligt att analysera den totala resursförbrukningen för flera körningsmått (till exempel körningsantal, varaktighet, väntetid med mera) för en angiven tidsram. De renderade diagrammen är interaktiva. När du väljer ett mått från ett av diagrammen visas en visning av visning av detaljnivå som visar de frågor som är associerade med det valda måttet på en ny flik.

Skärmbild av vyn Övergripande resursförbrukning i SQL Query Store med en konfigurationsdialogruta som anger de olika mått som är tillgängliga för visning.

Informationsvyn innehåller de 25 viktigaste konsumentfrågorna för resursen som bidrog till det mått som valdes. I den här informationsvyn används det konsekventa gränssnittet som gör det möjligt att granska associerade frågor och deras information, utvärdera sparade uppskattade frågeplaner och eventuellt använda plan som tvingar fram bättre prestanda. Den här vyn är värdefull när systemresurskonkurration blir ett problem, till exempel när CPU-användningen når kapaciteten.

Skärmbild av databasens 25 främsta resursförbrukning.

Frågor med den högsta resursförbrukningen

Vyn Mest resurskrävande frågor liknar detaljnivån i vyn Övergripande resursförbrukning. Det gör det också möjligt att välja ett mått och en statistik som ett filter. De frågor som visas är dock de 25 mest effektfulla frågorna baserat på det valda filtret och tidsramen.

Skärmbild av vyn med mest resurskrävande frågor för databasen.

Vyn Mest resurskrävande frågor ger den första indikationen på arbetsbelastningens oplanerade karaktär när du identifierar och förbättrar oplanerade arbetsbelastningar. I följande bild väljs till exempel måttet Körningsantal och Totalstatistik för att visa att cirka 90% av de vanligaste resurskrävande frågorna bara körs en gång.

Skärmbild på de främsta resurskrävande frågorna, filtrerade efter exekveringsantal.

Frågor med framtvingade planer

Vyn Frågor med framtvingade planer ger en snabb titt på de frågor som har framtvingade frågeplaner. Den här vyn blir relevant om en tvingad plan inte längre fungerar som förväntat och behöver omvärderas. Den här vyn ger möjlighet att granska alla bevarade uppskattade körningsplaner för en vald fråga som enkelt avgör om en annan plan nu är bättre lämpad för prestanda. I så fall är verktygsfältsknappar tillgängliga för att ta bort en plan efter behov.

Skärmbild av frågor med tvingade planer.

Frågor med hög variation

Frågeprestanda kan variera mellan körningar. Vyn Frågor med hög variation innehåller en analys av frågor som har den högsta variationen eller standardavvikelsen för ett valt mått. Gränssnittet är konsekvent med de flesta Query Store-vyer som möjliggör kontroll av frågeinformation, utvärdering av körningsplan och om du vill tvinga fram en specifik plan. Använd den här vyn om du vill justera oförutsägbara frågor till ett mer konsekvent prestandamönster.

Skärmbild med frågor med hög variation.

Frågeväntestatistik

Vyn Frågeväntestatistik analyserar de mest aktiva väntekategorierna för databasen och renderar ett diagram. Det här diagrammet är interaktivt. När du väljer en väntekategori visas information om de frågor som bidrar till väntetidsstatistiken.

Skärmbild av sökfrågor med hög variation i visningslägen.

Gränssnittet för informationsvyn är också konsekvent med de flesta frågelagringsvyer som möjliggör granskning av frågeinformation, utvärdering av körningsplan och eventuellt framtvinga en specifik plan. Den här vyn hjälper dig att identifiera frågor som påverkar användarupplevelsen i olika program.

Spårningsfråga

I vyn Spårningsfråga kan du analysera en specifik fråga baserat på ett angivet fråge-ID-värde. När du har kört vyn visas frågans fullständiga körningshistorik. En bockmarkering för en körning anger att en tvingad plan användes. Den här vyn kan ge insikter om frågor, till exempel frågor med framtvingade planer för att kontrollera att frågeprestandan förblir stabil.

Skärmbild av filtreringen av vyn Spårningsfråga efter ett specifikt fråge-ID.

Använda Query Store för att hitta frågeväntepunkter

När systemets prestanda börjar försämras är det klokt att läsa frågeväntestatistik för att identifiera en orsak. Förutom att identifiera frågor som behöver finjusteras kan det också belysa potentiella infrastrukturuppgraderingar som skulle vara fördelaktiga.

SQL Query Store innehåller vyn Frågeväntestatistik för att ge insikter om de främsta väntekategorierna för databasen. För närvarande finns det 23 väntekategorier.

Ett stapeldiagram visar de mest effektfulla väntekategorierna för databasen när du öppnar vyn Frågeväntestatistik. Dessutom kan ett filter som finns i verktygsfältet i fönstret väntekategorier göra det möjligt att beräkna väntestatistiken baserat på total väntetid (standard), genomsnittlig väntetid, minsta väntetid, maximal väntetid eller standardavvikelseväntetid.

Skärmbild av vyn Frågeväntestatistik som visar de mest effektfulla kategorierna som ett stapeldiagram.

När du väljer en väntekategori visas information om de frågor som bidrar till den väntekategorin. Från den här vyn har du möjlighet att undersöka enskilda frågor som är mest effektfulla. Du kan komma åt de beständiga uppskattade körningsplanerna som visas i fönstret Plansammanfattning genom att välja en fråga i frågefönstret. Om du väljer en frågeplan i fönstret Plansammanfattning visas den grafiska frågeplanen i det nedre fönstret. Från den här vyn har du möjlighet att framtvinga eller ta bort en frågeplan för frågan för att förbättra prestandan.

Skärmbild av vyn Frågeväntestatistik som visar de mest effektfulla frågorna för väntekategorin.

Automatisk plankorrigering

SQL Server 2017 och Azure SQL Database introducerade begreppet automatisk plankorrigering genom att analysera data i Query Store. När du aktiverar Query Store för en databas i SQL Server 2017 (eller senare) eller i Azure SQL Database letar SQL Server-motorn efter frågeplansregressioner och ger rekommendationer. Du kan se dessa rekommendationer i sys.dm_db_tuning_recommendations vyn dynamisk hantering (DMV). De här rekommendationerna innehåller T-SQL-instruktioner för att manuellt framtvinga en frågeplan från när systemprestanda var goda.

Om du får förtroende för dessa rekommendationer kan du ange att SQL Server framtvingar planer automatiskt när regressioner påträffas. Aktivera automatisk plankorrigering med hjälp ALTER DATABASE av och AUTOMATIC_TUNING argumentet.

För Azure SQL Database kan du också aktivera automatisk plankorrigering via alternativen för automatisk justering i Azure-portalen eller via REST-API:erna. Rekommendationer från automatisk plankorrigering är alltid aktiverade för alla databaser där Query Store är aktiverat (vilket är standardinställningen för Azure SQL Database och Azure SQL Managed Instance). För nya databaser är automatisk plankorrigering (FORCE_PLAN) aktiverad som standard för Azure SQL Database.