Prestandarekommendationer för Database Advisor för Azure SQL Database
Gäller för:Azure SQL Database
Azure SQL Database lär sig och anpassar sig med ditt program. Azure SQL Database har ett antal databasrådgivare som ger anpassade rekommendationer som gör att du kan maximera prestandan. Dessa databasrådgivare utvärderar och analyserar kontinuerligt användningshistoriken och ger rekommendationer baserat på arbetsbelastningsmönster som hjälper till att förbättra prestanda.
Prestandaöversikt
Prestandaöversikten i Azure-portalen innehåller en sammanfattning av databasens prestanda och hjälper dig med prestandajustering och felsökning.
- Om den finns innehåller panelen Rekommendationer en uppdelning av justeringsrekommendationerna för databasen. Om du väljer den här panelen går du till Alternativ för prestandarekommendationer.
- Panelen Justeringsaktivitet innehåller en sammanfattning av de pågående och slutförda justeringsåtgärderna för databasen, vilket ger dig en snabb överblick över justeringsaktivitetens historik. Om du väljer den här panelen går du till rekommendationer och justeringshistorik för databasen. Mer information finns i automatisk justering.
- Panelen Automatisk justering visar konfigurationen för automatisk justering för databasen (justeringsalternativ som tillämpas automatiskt på databasen). Om du väljer den här panelen öppnas dialogrutan för automatiseringskonfiguration. Mer information om automatisk justering av databasindex och frågekörningsplaner finns i automatisk justering.
- Panelen Databasfrågor visar sammanfattningen av frågeprestanda för databasen (övergripande DTU-användning och frågor som förbrukar mest resurser). Om du väljer den här panelen går du till Query Performance Insight.
- Standarddiagrammet innehåller en sammanfattning av de senaste 24 timmarnas databasaktivitet, med alternativ för att zooma in på senare aktivitet. Staplade stapeldiagram analyserar de viktigaste frågorna efter CPU, och grafen med flera rader representerar arbetsbelastningen efter CPU, data-I/O och logg-I/O. Välj enskilda staplar i diagrammet, som var och en representerar en cachelagrad frågeplan. Gå in på sidan Query Performance Insight och identifiera de dyraste frågorna i din arbetsbelastning. Mer information finns i Query Performance Insights.
Gå till sidan Prestandaöversikt under Intelligenta prestanda i Azure-portalens navigeringsmeny för din Azure SQL-databas.
Alternativ för prestandarekommendations
Tillgängliga alternativ för prestandarekommendationer i Azure SQL Database är:
Prestandarekommendations | Stöd för enkel databas och pooldatabas | Stöd för instansdatabas |
---|---|---|
Skapa indexrekommendationer – Rekommenderar att du skapar index som kan förbättra arbetsbelastningens prestanda. | Ja | Nej |
Släpp indexrekommendationer – Rekommenderar borttagning av redundanta och duplicerade index dagligen, förutom unika index och index som inte har använts under en längre tid (>90 dagar). Observera att det här alternativet inte är kompatibelt med program som använder partitionsväxling och indextips. Det går inte att ta bort oanvända index för Premium- och Affärskritisk-tjänstnivåer. | Ja | Nej |
Parameterisera rekommendationer för frågor (förhandsversion) – Rekommenderar framtvingad parameterisering i fall då du har en eller flera frågor som ständigt omkompileras men som får samma frågekörningsplan. | Ja | Nej |
Åtgärda schemaproblemrekommendationer (förhandsversion) – Rekommendationer för schemakorrigering visas när Azure SQL Database märker en avvikelse i antalet schemarelaterade SQL-fel som inträffar i databasen. Microsoft håller för närvarande på att ta bort rekommendationerna "Åtgärda schemaproblem". | Ja | Nej |
Information om hur du tillämpar prestandarekommendationer finns i tillämpa rekommendationer. Information om hur du visar status för rekommendationer finns i Övervakningsåtgärder.
Du kan också hitta en fullständig historik över justeringsåtgärder som har tillämpats tidigare.
Skapa indexrekommendationer
Azure SQL Database övervakar löpande de frågor som körs och identifierar vilka index som skulle kunna ge bättre prestanda. När det finns tillräckligt med förtroende för att ett visst index saknas skapas en ny rekommendation för Skapa index .
Azure SQL Database skapar förtroende genom att uppskatta den prestandaökning som indexet skulle ge genom tid. Beroende på den beräknade prestandavinsten kategoriseras rekommendationerna med nivån Hög, Medel eller Låg.
Index som skapas via rekommendationer flaggas alltid som automatiskt skapade. Du kan se vilka index som skapats automatiskt i vyn sys.indexes. Automatiskt skapade index blockerar inte ALTER/RENAME-kommandon.
Om du försöker släppa kolumnen som har ett automatiskt skapat index över sig skickas kommandot. Det automatiskt skapade indexet tas också bort med kommandot . Vanliga index blockerar kommandot ALTER/RENAME på kolumner som är indexerade.
När rekommendationen skapa index har tillämpats jämför Azure SQL Database frågornas prestanda med baslinjeprestandan. Om det nya indexet förbättrar prestanda flaggas rekommendationen som lyckad och effektrapporten är tillgänglig. Om indexet inte förbättrar prestandan återställs det automatiskt. Azure SQL Database använder den här processen för att säkerställa att rekommendationerna förbättrar databasens prestanda.
En rekommendation för att skapa index har en back-off-princip som inte tillåter att rekommendationen tillämpas om resursanvändningen för en databas eller pool är hög. Back-off-principen tar hänsyn till cpu, data-I/O, logg-I/O och tillgänglig lagring.
Om CPU, data-I/O eller logg-I/O är högre än 80 % under de föregående 30 minuterna skjuts rekommendationen skapa index upp. Om den tillgängliga lagringen kommer att ligga under 10 % efter att indexet har skapats hamnar rekommendationen i ett feltillstånd. Om automatisk justering efter ett par dagar fortfarande tror att indexet skulle vara fördelaktigt, startar processen igen.
Den här processen upprepas tills det finns tillräckligt med tillgängligt lagringsutrymme för att skapa ett index, eller tills indexet inte längre ses som fördelaktigt.
Ta bort indexrekommendationer
Förutom att identifiera saknade index så analyserar Azure SQL Database även löpande de befintliga indexen. Om ett index inte används rekommenderar Azure SQL Database att du tar bort det. Borttagning av index rekommenderas i två fall:
- Indexet är en dubblett av ett annat index (samma kolumn, partitionsschema och filter).
- Indexet har inte använts under en längre period (>90 dagar).
Släpp indexrekommendationer går också igenom verifieringen efter implementeringen. Om databasen får bättre prestanda genereras en effektrapport. Om databasen får sämre prestanda ångras rekommendationen.
Parameterisera frågerekommendationer (förhandsversion)
Rekommendationer för parameterisera frågor visas när du har en eller flera frågor som ständigt omkompileras men som får samma frågekörningsplan. Det här villkoret skapar en möjlighet att tillämpa tvingad parameterisering. Framtvingad parameterisering gör i sin tur att frågeplaner cachelagras och återanvändas i framtiden, vilket förbättrar prestanda och minskar resursanvändningen.
Varje fråga måste först kompileras för att generera en körningsplan. Varje genererad plan läggs till i plancachen. Efterföljande körningar av samma fråga kan återanvända den här planen från cacheminnet, vilket eliminerar behovet av ytterligare kompilering.
Frågor med icke-parametriserade värden kan leda till pålägg på prestandan eftersom körningsplanen kompileras om varje gång de icke-parametriserade värden är annorlunda. 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. Det här beteendet kan ändras genom att ange alternativet för tvingad parameterisering i databasen.
För att hjälpa dig att uppskatta effekten av den här rekommendationen får du en jämförelse mellan den faktiska CPU-användningen och den beräknade CPU-användningen (som om rekommendationen tillämpades). Den här rekommendationen kan hjälpa dig att få cpu-besparingar. Det kan också hjälpa dig att minska frågevaraktigheten och kostnaderna för plancachen, vilket innebär att fler av planerna kan finnas kvar i cacheminnet och återanvändas. Du kan tillämpa den här rekommendationen snabbt genom att välja kommandot Tillämpa .
När du har tillämpat den här rekommendationen aktiverar den tvingad parameterisering inom några minuter i databasen. Den startar övervakningsprocessen, som varar i cirka 24 timmar. Efter den här perioden kan du se valideringsrapporten. Den här rapporten visar cpu-användningen för databasen 24 timmar före och efter att rekommendationen har tillämpats. Azure SQL Database Advisor har en säkerhetsmekanism som automatiskt återställer den tillämpade rekommendationen om prestandaregression har identifierats.
Åtgärda schemaproblemrekommendationer (förhandsversion)
Viktigt!
Microsoft håller för närvarande på att ta bort rekommendationerna "Åtgärda schemaproblem". Vi rekommenderar att du använder Intelligent Insights för att övervaka dina problem med databasprestanda, inklusive schemaproblem som rekommendationerna "Åtgärda schemaproblem" tidigare omfattade.
Rekommendationer för schemaproblem visas när Azure SQL Database märker en avvikelse i antalet schemarelaterade SQL-fel som inträffar i databasen. Den här rekommendationen visas vanligtvis när databasen stöter på flera schemarelaterade fel (ogiltigt kolumnnamn, ogiltigt objektnamn och så vidare) inom en timme.
"Schemaproblem" är en klass med syntaxfel. De inträffar när definitionen av SQL-frågan och definitionen av databasschemat inte justeras. En av de kolumner som förväntas av frågan kan till exempel saknas i måltabellen eller vice versa.
Rekommendationen "Åtgärda schemaproblem" visas när Azure SQL Database märker en avvikelse i antalet schemarelaterade SQL-fel som inträffar i databasen. I följande tabell visas de fel som är relaterade till schemaproblem:
SQL-felkod | Meddelande |
---|---|
201 | Proceduren eller funktionen "" förväntar sig parametern "", som inte har angetts. |
207 | Ogiltigt kolumnnamn *. |
208 | Ogiltigt objektnamn *. |
213 | Kolumnnamn eller antal angivna värden matchar inte tabelldefinitionen. |
2812 | Det gick inte att hitta den lagrade proceduren *. |
8144 | Proceduren eller funktionen * har för många angivna argument. |
Anpassade program
Utvecklare kan överväga att utveckla anpassade program med hjälp av prestandarekommendationer för Azure SQL Database. Alla rekommendationer som anges i portalen för en databas kan nås via Get-AzSqlDatabaseRecommendedAction API.
Nästa steg
- Mer information om automatisk justering av databasindex och frågekörningsplaner finns i Automatisk justering av Azure SQL Database.
- Mer information om automatisk övervakning av databasprestanda med automatiserad diagnostik och rotorsaksanalys av prestandaproblem finns i Azure SQL Intelligent Insights.
- Se Query Performance Insights för att lära dig mer om och visa prestandapåverkan för dina viktigaste frågor.