Beskriva automatisk justering

Slutförd

Automatisk justering är en övervaknings- och analysfunktion som kontinuerligt lär sig om din arbetsbelastning och identifierar potentiella problem och förbättringar.

Rekommendationerna för automatisk justering baseras på de data som samlas in från Query Store. Körningsplaner utvecklas över tid på grund av schemaändringar, indexändringar eller ändringar av data som orsakar uppdateringar av statistiken. Den här utvecklingen kan leda till att frågor fungerar dåligt eftersom körningsplanen inte längre uppfyller kraven för den angivna frågan.

Dessutom möjliggör automatisk justering insamling och tillämpning av maskininlärningstjänster mot prestandamått för att tillhandahålla föreslagna förbättringar eller till och med tillåta självkorrigering.

Oavsett om det är lokalt eller i molnet kan du med automatisk justering identifiera problem som orsakas av regression av frågekörningsplan. I Azure SQL Database kan du dessutom förbättra frågeprestanda genom indexjustering. Automatisk justering i Azure SQL Database kan identifiera index som ska läggas till eller till och med tas bort från databasen för att förbättra frågeprestanda.

Automatisk plankorrigering

Med hjälp av Query Store-data kan databasmotorn avgöra när frågekörningsplanerna har regresserats i prestanda. Även om du kan identifiera en regresserad plan manuellt via användargränssnittet, ger Query Store även möjlighet att meddela dig automatiskt.

Skärmbild av vyn Query Store för regresserad plankorrigering.

I exemplet ovan kan du se en bockmarkering på plan-ID 1, vilket innebär att planen har tvingats. När funktionen har aktiverats framtvingar databasmotorn automatiskt alla rekommenderade frågekörningsplaner när:

  • Den tidigare planen hade en högre felfrekvens än den rekommenderade planen
  • Den uppskattade CPU-vinsten var större än 10 sekunder
  • Kraftplanen har presterat bättre än den föregående

Planen återgår till den senast kända bra planen efter 15 körningar av frågan.

När planen framtvingas automatiskt tillämpar databasmotorn den senast kända bra planen och fortsätter även att övervaka prestanda för frågekörningsplanen. Om den framtvingade planen inte presterar bättre än den tidigare planen kommer den att vara oforcerad och tvinga fram en ny plan som ska sammanställas. Om den framtvingade planen fortsätter att överträffa den tidigare dåliga planen förblir den framtvingad tills en omkompilering inträffar.

Du kan aktivera automatisk plankorrigering via en T-SQL-fråga enligt nedan. Query Store måste vara aktiverat och måste vara i läs- och skrivläge för att kommandot ska lyckas. Om något av dessa två villkor inte uppfylls misslyckas ALTER-instruktionen.

ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);

Du kan undersöka rekommendationerna för automatisk justering via en dynamisk hanteringsvy (DMV), sys.dm_db_tuning_recommendations, som är tillgänglig i SQL Server 2017 eller senare och som också är tillgänglig i Azure SQL Database-lösningar. Denna DMV innehåller information som orsaker till varför rekommendationen tillhandahölls, typen av rekommendation och tillståndet för rekommendationen. Kontrollera att automatisk justering är aktiverad för en databas genom att kontrollera vyn sys.database_automatic_tuning_options.

Automatisk indexhantering

Azure SQL Database kan utföra automatisk indexjustering. Med tiden lär sig databasen om befintliga arbetsbelastningar och ger rekommendationer för att lägga till eller ta bort index för att ge bättre prestanda. Precis som om du tvingar fram förbättrade frågeplaner kan databasen konfigureras för att tillåta automatisk skapande eller borttagning av index beroende på befintliga indexprestanda, enligt nedan:

Skärmbild av alternativ för automatisk justering för Azure SQL Database.

När det är aktiverat identifierar sidan Prestandarekommendationer index som kan skapas eller tas bort beroende på frågeprestanda. Kom ihåg att den här funktionen inte är tillgänglig för lokala databaser och endast tillgänglig för Azure SQL Database.

Du kan också använda följande fråga för att se de automatiska justeringsfunktionerna som är aktiverade i databasen:

SELECT name,
    desired_state_desc,
    actual_state_desc,
    reason_desc
FROM sys.database_automatic_tuning_options

Att skapa nya index kan förbruka resurser, och tidpunkten för att skapa index är viktig för att säkerställa att ingen negativ effekt påverka dina arbetsbelastningar.

Azure SQL Database övervakar de resurser som krävs för att implementera nya index för att undvika att orsaka prestandaförsämring. Justeringsåtgärden skjuts upp tills tillgängliga resurser är tillgängliga, till exempel om resurser krävs för befintliga arbetsbelastningar och inte är tillgängliga för att skapa ett index.

Övervakning säkerställer att åtgärder som vidtas inte skadar prestanda. Om ett index tas bort och frågeprestandan försämras märkbart återskapas det nyligen borttagna indexet automatiskt.