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. Exekveringsplaner utvecklas över tid på grund av schemaändringar, indexändringar eller ändringar av data som leder till uppdateringar av statistiken. Den här utvecklingen kan leda till att sökfrågor presterar ineffektivt eftersom exekveringsplanen inte längre uppfyller kraven för den aktuella sökfrå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 planforcing sker automatiskt tillämpar databasmotorn den senast kända bra planen och övervakar prestandan för frågeexekvering. Om den framtvingade planen inte presterar bättre än den tidigare, är den oforcerad och en ny plan kompileras. Men om den framtvingade planen fortsätter att överträffa den tidigare dåliga planen förblir den på plats tills en omkompilering inträffar.

Du kan aktivera automatisk plankorrigering via en T-SQL-fråga. 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 har möjlighet att utföra automatisk indexjustering. Med tiden lär den sig från befintliga arbetsbelastningar och ger rekommendationer för att lägga till eller ta bort index för att förbättra prestanda. På samma sätt som du tvingar fram förbättrade frågeplaner kan databasen konfigureras för att automatiskt skapa eller ta bort index baserat på deras prestanda, enligt följande bild.

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

När den är aktiverad 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 indexskapandet är viktig för att säkerställa att arbetsbelastningarna inte påverkas negativt.

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.