Udforsk Forespørgselslager

Fuldført

SQL Server Query Store er en funktion pr. database, der automatisk registrerer en oversigt over forespørgsler, planer og kørselsstatistikker, der forenkler fejlfinding af ydeevnen og justering af forespørgsler. Den giver også indsigt i databaseanvendelsesmønstre og ressourceforbrug.

Forespørgselslageret består af tre butikker:

  • Planlager: Gemmer oplysninger om anslået udførelsesplan.
  • Statistiklager for kørsel: Gemmer oplysninger om kørselsstatistik.
  • Ventestatistiklager: Fortsætter med at bruge oplysninger om ventestatistik.

Skærmbillede af komponenterne i Query Store.

Aktivér forespørgselslageret

Forespørgselslageret er som standard aktiveret i Azure SQL-databaser. Hvis du vil bruge den sammen med SQL Server og Azure Synapse Analytics, skal du aktivere den først. Hvis du vil aktivere funktionen Forespørgselslager, skal du bruge følgende forespørgsel, der er gyldig for dit 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;

Sådan indsamler forespørgselslageret data

Forespørgselslageret integreres med pipelinen til behandling af forespørgsler i flere faser. På hvert integrationspunkt indsamles data i hukommelsen og skrives asynkront til disken for at minimere I/O-omkostninger. Integrationspunkterne er som følger:

  1. Når en forespørgsel udføres for første gang, sendes forespørgselsteksten og den indledende anslåede udførelsesplan til Forespørgselslageret og bevares.

  2. Planen opdateres i Forespørgselslager, når en forespørgsel genkompilerer. Hvis genkompilering resulterer i en nyligt genereret udførelsesplan, bevares den også i Forespørgselslager for at øge de tidligere planer. Derudover holder Forespørgselslager styr på kørselsstatistikken for hver forespørgselsplan til sammenligningsformål.

  3. Under kompilering og kontrol af genkompileringsfaser identificerer Forespørgselslager, om der er en tvungen plan for forespørgslen, der skal udføres. Forespørgslen kompileres igen, hvis Forespørgselslageret leverer en tvungen plan, der er forskellig fra planen i procedurecachen.

  4. Når en forespørgsel udføres, bevares kørselsstatistikken i Forespørgselslager. Forespørgselslageret aggregerer disse data for at sikre en nøjagtig repræsentation af hver forespørgselsplan.

Skærmbillede af integrationspunkterne i forespørgselslageret i pipelinen for udførelse af forespørgsler, der vises som et rutediagram.

Du kan få mere at vide om, hvordan Query Store indsamler data, under Sådan indsamler Query Store data.

Almindelige scenarier

SQL Server Query Store giver værdifuld indsigt i ydeevnen af databasehandlinger. Almindelige scenarier omfatter:

  • Identificere og løse regressioner for ydeevnen på grund af valg af lavere forespørgselsudførelsesplan.
  • Identificering og justering af forespørgsler om det højeste ressourceforbrug.
  • A/B-test for at evaluere virkningen af database- og programændringer.
  • Sikring af ydeevnestabilitet efter SQL Server-opgraderinger.
  • Fastlæggelse af de oftest anvendte forespørgsler.
  • Overvågning af oversigten over forespørgselsplaner for en forespørgsel.
  • Identificering og forbedring af ikke-planlagte arbejdsbelastninger.
  • Forståelse af de fremherskende ventekategorier i en database og de bidragende forespørgsler og planer, der påvirker ventetider.
  • Analyse af databaseanvendelsesmønstre over tid med hensyn til ressourceforbrug (CPU, I/O, hukommelse).

Find visningerne i forespørgselslageret

Når Forespørgselslager er aktiveret på en database, er mappen Forespørgselslager synlig for databasen i Objektoversigt. For Azure Synapse Analytics vises visningerne i Forespørgselslager under Systemvisninger. Visningerne i Forespørgselslager giver aggregeret hurtig indsigt i ydeevneaspekterne af SQL Server-databasen.

Skærmbillede af S S MS Object Explorer med visningerne i forespørgselslageret fremhævet.

Regresserede forespørgsler

En regresseret forespørgsel oplever forringelse af ydeevnen over tid på grund af ændringer i udførelsesplanen. Anslåede udførelsesplaner kan ændres på grund af forskellige faktorer, herunder skemaændringer, statistikændringer og indeksændringer. Det kan være det første instinkt at undersøge procedurecachen, men den gemmer kun den nyeste udførelsesplan for en forespørgsel, og planer kan fjernes på baggrund af systemets hukommelsesbehov. Forespørgselslageret bevarer dog flere udførelsesplaner for hver forespørgsel, hvilket giver fleksibiliteten til at vælge en bestemt plan via en plan, der tvinger til at håndtere regression af forespørgselsydeevnen, som skyldes ændringer af planen.

Visningen Regresserede forespørgsler kan lokalisere forespørgsler, hvis udførelsesmålepunkter regresserer på grund af ændringer i udførelsesplanen over en angivet tidsramme. Denne visning giver mulighed for filtrering baseret på en valgt metrikværdi (f.eks. varighed, CPU-tid, rækkeantal med mere) og en statistik (total, gennemsnit, min., maks. eller standardafvigelse). Derefter vises de øverste 25 regresserede forespørgsler baseret på det angivne filter. Som standard vises der en grafisk liggende søjlediagramvisning af forespørgslerne, men du kan eventuelt få vist forespørgslerne i et gitterformat.

Når du har valgt en forespørgsel i forespørgselsruden øverst til venstre, viser ruden oversigt over planen de permanente forespørgselsplaner, der er knyttet til forespørgslen over tid. Hvis du vælger en forespørgselsplan i ruden Oversigt over plan, vises en grafisk forespørgselsplan i den nederste rude. Værktøjslinjeknapper i både ruden med planoversigten og ruden grafisk forespørgselsplan giver dig mulighed for at gennemtvinge den valgte plan for den valgte forespørgsel. Denne rudestruktur og funktionsmåde bruges konsekvent på tværs af alle SQL-forespørgselsvisninger.

Skærmbillede af visningen Regresserede forespørgsler i forespørgselslageret, der viser hver af de forskellige ruder.

Du kan også bruge den lagrede sp_query_store_force_plan procedure til at bruge plantvingelse.

EXEC sp_query_store_force_plan @query_id=73, @plan_id=79

Samlet ressourceforbrug

Visningen Samlet ressourceforbrug gør det muligt at analysere det samlede ressourceforbrug for flere udførelsesmålepunkter (f.eks. antal udførelser, varighed, ventetid og meget mere) for en bestemt tidsramme. De gengivne diagrammer er interaktive. Når du vælger en måling fra et af diagrammerne, vises en visning af detaljeadgang, der viser de forespørgsler, der er knyttet til den valgte måling, under en ny fane.

Skærmbillede af visningen af det samlede ressourceforbrug i SQL Query Store med en konfigurationsdialogboks, der angiver de forskellige målepunkter, der er tilgængelige til visning.

Detaljevisningen indeholder de øverste 25 ressourceforbrugerforespørgsler, der har bidraget til den valgte metrikværdi. I denne detaljevisning bruges den konsistente grænseflade, der gør det muligt at kontrollere de tilknyttede forespørgsler og deres detaljer, evaluere gemte anslåede forespørgselsplaner og eventuelt bruge en plan, der tvinger til at forbedre ydeevnen. Denne visning er værdifuld, når systemressourcestrid bliver et problem, f.eks. når CPU-forbruget når kapaciteten.

Skærmbillede af de 25 største ressourceforbrug for databasen.

Mest ressourcekrævende forespørgsler

Visningen Forespørgsler om de mest ressourceforbrugende svarer til detailudledningen i visningen Samlet ressourceforbrug. Det giver også mulighed for at vælge en metrikværdi og en statistik som et filter. De forespørgsler, der vises, er dog de 25 mest virkningsfulde forespørgsler baseret på det valgte filter og den valgte tidsramme.

Skærmbillede af den mest ressourcekrævende forespørgselsvisning for databasen.

Visningen Top ressourceforbrugende forespørgsler giver den første indikation af arbejdsbelastningens uplanlagte karakter, når du identificerer og forbedrer ikke-planlagte arbejdsbelastninger. På følgende billede vælges metrikværdien Execution Countog totalstatistikken for at afsløre, at ca. 90% af de mest ressourcekrævende forespørgsler kun udføres én gang.

Skærmbillede af de mest ressourcekrævende forespørgsler filtreret efter udførelsesantal.

Forespørgsler med tvungne planer

Visningen Forespørgsler med tvungne planer giver et hurtigt indblik i de forespørgsler, der har tvungne forespørgselsplaner. Denne visning bliver relevant, hvis en tvungen plan ikke længere fungerer som forventet og skal evalueres igen. Denne visning giver mulighed for nemt at gennemse alle permanente anslåede udførelsesplaner for en valgt forespørgsel for at afgøre, om en anden plan nu er bedre egnet til ydeevne. Hvis det er tilfældet, er værktøjslinjeknapperne tilgængelige til at fjerne en plan efter behov.

Skærmbillede af forespørgslerne med tvungne planer.

Forespørgsler med høj variation

Forespørgselsydeevnen kan variere mellem udførelser. Visningen Forespørgsler med høj variation indeholder en analyse af forespørgsler, der har den højeste variation eller standardafvigelse for en valgt metrikværdi. Grænsefladen er i overensstemmelse med de fleste visninger i Forespørgselslager, hvilket giver mulighed for inspektion af detaljer i forespørgsler, evaluering af udførelsesplan og eventuelt gennemtvinging af en bestemt plan. Brug denne visning til at justere uforudsigelige forespørgsler i et mere ensartet ydeevnemønster.

Skærmbillede med forespørgsler med høj variation.

Statistik for forespørgselsventetider

Visningen Statistik over ventetid på forespørgsler analyserer de mest aktive ventekategorier for databasen og gengiver et diagram. Dette diagram er interaktivt. Hvis du vælger en ventekategori, analyseres detaljerne for de forespørgsler, der bidrager til statistikken for ventetid.

Skærmbillede af forespørgsler med visning med høj variation.

Grænsefladen til detaljevisning er også i overensstemmelse med de fleste visninger af forespørgselslageret, hvilket giver mulighed for inspektion af detaljer i forespørgsler, evaluering af udførelsesplan og eventuelt gennemtvinging af en bestemt plan. Denne visning hjælper med at identificere forespørgsler, der påvirker brugeroplevelsen på tværs af programmer.

Sporingsforespørgsel

Visningen Sporingsforespørgsel gør det muligt at analysere en bestemt forespørgsel baseret på en angivet forespørgsels-id-værdi. Når visningen er kørt, indeholder den den komplette udførelseshistorik for forespørgslen. En markering af en udførelse angiver, at der blev brugt en tvungen plan. Denne visning kan give indsigt i forespørgsler, f.eks. dem med tvungne planer, for at bekræfte, at forespørgslens ydeevne forbliver stabil.

Skærmbillede af visningen Sporingsforespørgsel, der filtrerer efter et bestemt forespørgsels-id.

Brug af Forespørgselslager til at finde forespørgselsventetider

Når ydeevnen for et system begynder at blive forringet, giver det mening at se statistikkerne over forespørgselsventetider for potentielt at identificere en årsag. Ud over at identificere forespørgsler, der skal justeres, kan det også kaste lys over potentielle infrastrukturopgraderinger, der ville være gavnlige.

SQL-forespørgselslageret indeholder visningen Statistik for ventetid på forespørgsler , der giver indsigt i de øverste ventekategorier for databasen. I øjeblikket er der 23 ventekategorier.

I et liggende søjlediagram vises de mest virkningsfulde ventekategorier for databasen, når du åbner visningen Statistik for forespørgselsventetider. Desuden gør et filter, der er placeret på værktøjslinjen i ruden ventekategorier, det muligt at beregne ventestatistikken baseret på den samlede ventetid (standard), den gennemsnitlige ventetid, den mindste ventetid, den maksimale ventetid eller standardafvigelsens ventetid.

Skærmbillede af visningen Statistik for ventetid på forespørgsler, der viser de mest virkningsfulde kategorier som et liggende søjlediagram.

Når du vælger en ventekategori, analyseres detaljerne for de forespørgsler, der bidrager til den pågældende ventekategori. I denne visning har du mulighed for at undersøge individuelle forespørgsler, der er mest virkningsfulde. Du kan få adgang til de permanente anslåede udførelsesplaner, der vises i ruden Planoversigt, ved at vælge en forespørgsel i forespørgselsruden. Hvis du vælger en forespørgselsplan i ruden Planoversigt, vises den grafiske forespørgselsplan i den nederste rude. I denne visning har du mulighed for at gennemtvinge eller ophæve en forespørgselsplan for forespørgslen for at forbedre ydeevnen.

Skærmbillede af visningen Statistik for ventetid på forespørgsler, der viser de mest virkningsfulde forespørgsler for ventekategorien.

Automatisk plankorrektion

SQL Server 2017 og Azure SQL Database introducerede begrebet automatisk plankorrektion ved at analysere data i Forespørgselslager. Når du aktiverer Forespørgselslager med en database i SQL Server 2017 (eller nyere) og i Azure SQL Database, søger SQL Server-programmet efter regressioner i forespørgselsplan og giver anbefalinger. Du kan se disse anbefalinger i sys.dm_db_tuning_recommendations DMV (Dynamic Management View). Disse anbefalinger omfatter T-SQL-sætninger til manuelt at gennemtvinge en forespørgselsplan, når ydeevnen var i god stand.

Hvis du får tillid til disse anbefalinger, kan du aktivere SQL Server til automatisk at gennemtvinge planer, når der registreres regressioner. Aktivér automatisk plankorrektion ved hjælp af ALTER DATABASE og argumentet AUTOMATIC_TUNING.

For Azure SQL Database kan du også aktivere automatisk rettelse af planer via indstillinger for automatisk justering på Azure Portal eller REST API'er. Anbefalinger til automatisk plankorrektion er altid aktiveret for alle databaser, hvor Forespørgselslager er aktiveret (hvilket er standarden for Azure SQL Database og Azure SQL Managed Instance). For nye databaser er automatisk plankorrektion (FORCE_PLAN) aktiveret som standard for Azure SQL Database.