Intelligenta prestanda

Slutförd

SQL Server och Azure SQL har automatisering för att ge ditt program konsekventa prestanda. Dessa automatiseringsfunktioner kallas tillsammans för intelligenta prestanda.

Intelligenta prestanda för Azure SQL omfattar bland annat intelligent frågebearbetning, automatisk plankorrigering och automatisk justering.

Intelligent frågebearbetning

Intelligent frågebearbetning (IQP, intelligent query processing) är en uppsättning nya funktioner som är inbyggda i frågeprocessorn. Du aktiverar dem genom att använda databasens senaste kompatibilitetsnivå. Program kan få prestanda med hjälp av den senaste databaskompatibilitetsnivån. Det behövs inga kodändringar. Ett exempel på IQP är uppskjuten kompilering av tabellvariabler som gör att frågor med tabellvariabler kan köras snabbare.

Azure SQL Database och Azure SQL Managed Instance stöder samma databaskompatibilitetsnivå som krävs (150) för att använda IQP som SQL Server 2019 och senare versioner.

Automatisk plankorrigering

Frågeplansregressioner är ett av de svåraste prestandaproblemen att lösa med SQL Server. Frågeplansregression inträffar när samma fråga kompileras om och en ny plan ger sämre prestanda.

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.

Automatisk justering för Azure SQL Database

Automatisk plankorrigering är ett exempel på automatisk justering i Azure SQL och SQL Server, men en unik aspekt av automatisk justering för Azure SQL Database är automatisk indexering.

Kommentar

Automatisk indexering är för närvarande inte tillgängligt i SQL Managed Instance.

Molnet är en metod för Microsoft att tillhandahålla ytterligare tjänster i form av prestandarekommendationer och automatisering utöver planrekommendationer. Den här funktionen heter automatisk justering för Azure SQL Database. De här tjänsterna körs som bakgrundsprogram som analyserar prestandadata från en instans av Azure SQL Database. Tjänsterna ingår i priset för alla databasprenumerationer.

Huvudscenariot för automatisk justering är att hantera index. Automatisk justering analyserar data från en databas telemetri, inklusive Query Store och DMV:er, för att rekommendera att index skapas som kan förbättra programmets prestanda. Du kan dessutom ange att automatisk justering automatiskt ska skapa index som kan förbättra frågeprestanda. Automatisk justering övervakar även indexändringar och rekommenderar eller tar automatiskt bort index som inte förbättrar frågeprestanda.

Automatisk justering för Azure SQL Database använder en återhållsam metod för indexrekommendationerna. Det innebär att rekommendationer som kan visas i en DMV som sys.dm_db_missing_index_details, eller en frågevisningsplan, kanske inte visas omedelbart som rekommendationer för automatisk justering. Automatiska justeringstjänster övervakar frågor över tid och använder maskininlärningsalgoritmer för att ge rekommendationer för att verkligen påverka frågeprestanda.

Tänk på att indexrekommendationerna från automatisk justering inte räknar in eventuella merkostnader som index kan orsaka, till exempel infogningar, uppdateringar och borttagningar. Vanligtvis har de nya icke-illustrerade index som funktionen för automatiska index skapar en stor positiv prestandapåverkan.

Parametriserade frågor är ytterligare ett scenario för automatisk justering. Frågor med icke-parametriserade värden kan leda till prestandakostnader, eftersom körningsplanen omkompileras varje gång de icke-parametriserade värdena skiljer sig åt. I många fall genererar samma frågor med olika parametervärden samma körningsplaner. Dessa planer läggs däremot fortfarande till separat i plancachen. Processen för att kompilera om körningsplaner använder databasresurser, ökar frågevaraktigheten och översvämmar plancachen. Dessa händelser leder i sin tur till att planer avlägsnas från cachen.

Du kan använda PSP-optimering (Parameter Sensitive Plan) för att hantera det här scenariot. PSP-optimering möjliggör automatiskt flera aktiva cachelagrade planer för en enda parameteriserad instruktion. Cachelagrade körningsplaner rymmer olika datastorlekar baserat på de värden för körningsparametern som tillhandahålls av kunden.

Exempel på index med automatisk justering i Azure SQL Database

Här är ett exempel från Azure-portalen där index rekommenderas för en databas baserat på arbetsbelastningsanalys över tid. Vi har inte skickat tillräckligt med aktivitet till din Sandbox Azure SQL Database för att generera rekommendationer som denna ännu. CREATE INDEX rekommendationer genereras över tid när din arbetsbelastning registreras och inte inom den lilla tidsramen för den här övningen.

Skärmbild av meddelande om indexrekommendation.

I Azure Portal i Prestandaöversikt kan du se prestandainformation för de fem viktigaste resurskrävande frågorna, som du hittar i Query Store. Dessutom ges en rekommendation.

Skärmbild av prestandaöversikt för frågor.

I Azure Portal finns också Query Performance Insight, som är ett visuellt rapporteringsverktyg som baseras på Query Store. I det här exemplet visar Query Performance Insight den fråga som förbrukar mest resurser och rekommendationer för att förbättra frågeprestanda.

Skärmbild av Query Performance Insight.

I Azure-portalen finns det också ett sätt att se eventuella prestandarekommendationer direkt.

Skärmbild av prestandarekommendationer.

I den här vyn visas specifika rekommendationer och historik för alla automatiska justeringsåtgärder. När det gäller index visas information om indexet och tabellen. Alternativet Automatisera aktiverar automatisk justering.

Skärmbild av alternativ för automatisk justering.

Du kan ställa in alternativ för automatisk justering för databasservern eller för enskilda databaser. Om du har aktiverat automatisk justering i det här scenariot skapas indexet automatiskt.

Du kan också visa alternativ för automatisk justering via sys.database_automatic_tuning_options DMV.

Kommentar

Rekommendationer och automatisering för index och parameterkänsliga planer är inte tillgängliga för Azure SQL Managed Instance eller SQL Server. Automatisk plankorrigering är tillgänglig.

Om du väljer det rekommenderade indexet visas mer information om det.

Skärmbild av rekommendationen att skapa index.

Du ser information om indexet, tabellen och det utrymme som krävs. Du kan välja att tillämpa det rekommenderade indexet eller visa ett T-SQL-skript som tillämpar indexet.

Skärmbild av skriptet för indexrekommendationen.

Observera att indexet är ett icke-grupperat index som tillämpas som ett onlineindex. När ett index har tillämpats baserat på en rekommendation, antingen manuellt eller via automatisk justering, så övervakar rekommendationsmotorn även frågeprestanda med det tillämpade indexet under en tid. Om frågeprestanda försämras jämfört med tidigare kan du ta bort indexet.

Kunskapstest

1.

Vad beskriver intelligent frågebearbetning bäst?

2.

I vilken typ av prestandascenario kan automatisk plankorrigering vara till hjälp med rekommendationer och korrigeringar?

3.

Baserat på vilken information kan automatisk justering för Azure SQL Database rekommendera och skapa index?