Aanbevelingen voor prestaties van Database Advisor voor Azure SQL Database
Van toepassing op: Azure SQL Database
Azure SQL Database leert en past zich aan met uw toepassing. Azure SQL Database heeft een aantal databaseadviseurs die aangepaste aanbevelingen bieden waarmee u de prestaties kunt maximaliseren. Deze databaseadviseurs beoordelen en analyseren continu de gebruiksgeschiedenis en bieden aanbevelingen op basis van workloadpatronen die de prestaties helpen verbeteren.
Prestatieoverzicht
Het prestatieoverzicht in Azure Portal biedt een overzicht van uw databaseprestaties en helpt u bij het afstemmen en oplossen van prestaties.
- Als deze aanwezig is, bevat de tegel Aanbevelingen een uitsplitsing van aanbevelingen voor het afstemmen van uw database. Als u deze tegel selecteert, gaat u naar opties voor aanbevelingen voor prestaties.
- De tegel Activiteit Afstemmen bevat een overzicht van de lopende en voltooide afstemmingsacties voor uw database, zodat u snel inzicht krijgt in de geschiedenis van de afstemmingsactiviteit. Als u deze tegel selecteert, gaat u naar de aanbevelingen en de afstemmingsgeschiedenis voor uw database. Zie automatisch afstemmen voor meer informatie.
- De tegel Automatisch afstemmen toont de configuratie voor automatisch afstemmen voor uw database (afstemmingsopties die automatisch worden toegepast op uw database). Als u deze tegel selecteert, wordt het dialoogvenster automatiseringsconfiguratie geopend. Zie automatisch afstemmen voor meer informatie over het automatisch afstemmen van databaseindexen en queryuitvoeringsplannen.
- Op de tegel Databasequery's ziet u de samenvatting van de queryprestaties voor uw database (algemeen DTU-gebruik en query's die de belangrijkste resources verbruiken). Als u deze tegel selecteert, gaat u naar Query Performance Insight.
- De standaardgrafiek biedt een overzicht van de afgelopen 24 uur aan databaseactiviteit, met opties om in te zoomen op recentere activiteiten. Gestapelde staafdiagrammen analyseren de belangrijkste query's per CPU en een grafiek met meerdere regels vertegenwoordigt de werkbelasting per CPU, Gegevens-IO en Logboek-IO. Selecteer afzonderlijke gestapelde balken in de grafiek, die elk een queryplan in de cache vertegenwoordigen. Duik in de pagina Query Performance Insight en identificeer de duurste query's in uw workload. Zie Query Performance Insights voor meer informatie.
Navigeer naar de overzichtspagina Prestaties onder Intelligente prestaties in het navigatiemenu van Azure Portal voor uw Azure SQL-database.
Opties voor aanbevelingen voor prestaties
Opties voor aanbevelingen voor prestaties die beschikbaar zijn in Azure SQL Database zijn:
Aanbeveling voor prestaties | Ondersteuning voor individuele databases en pooldatabases | Ondersteuning voor exemplaardatabases |
---|---|---|
Indexaanbevelingen maken: hiermee wordt aanbevolen om indexen te maken die de prestaties van uw workload kunnen verbeteren. | Ja | Nr. |
Aanbevelingen voor het verwijderen van overbodige en dubbele indexen wordt dagelijks aanbevolen, met uitzondering van unieke indexen en indexen die gedurende lange tijd (>90 dagen) niet zijn gebruikt. Houd er rekening mee dat deze optie niet compatibel is met toepassingen die gebruikmaken van partitiewisselingen en indexhints. Het verwijderen van ongebruikte indexen wordt niet ondersteund voor Premium- en Bedrijfskritiek-servicelagen. | Ja | Nr. |
Aanbevelingen voor query's parametriseren (preview) - Raadt geforceerde parameterisatie aan in gevallen waarin u een of meer query's hebt die voortdurend opnieuw worden gecompileerd, maar uiteindelijk hetzelfde queryuitvoeringsplan hebben. | Ja | Nr. |
Aanbevelingen voor schemaproblemen oplossen (preview) - Aanbevelingen voor schemacorrectie worden weergegeven wanneer Azure SQL Database een anomalie opmerkt in het aantal schemagerelateerde SQL-fouten dat op uw database plaatsvindt. Microsoft beëindigt momenteel aanbevelingen voor het oplossen van schemaproblemen. | Ja | Nr. |
Zie Aanbevelingen toepassen om prestatieaan aanbevelingen toe te passen. Zie Bewakingsbewerkingen om de status van aanbevelingen weer te geven.
U kunt ook de volledige geschiedenis vinden van afstemmingsacties die in het verleden zijn toegepast.
Aanbevelingen voor index maken
Azure SQL Database bewaakt continu de query's die worden uitgevoerd en identificeert de indexen die de prestaties kunnen verbeteren. Nadat er voldoende vertrouwen is dat een bepaalde index ontbreekt, wordt er een nieuwe aanbeveling voor het maken van een index gemaakt.
Azure SQL Database bouwt vertrouwen door de prestaties te schatten die de index zou opleveren. Afhankelijk van de geschatte prestatieverbetering worden aanbevelingen gecategoriseerd als hoog, gemiddeld of laag.
Indexen die zijn gemaakt met behulp van aanbevelingen, worden altijd gemarkeerd als automatisch gemaakte indexen. U kunt zien welke indexen automatisch zijn gemaakt door te kijken naar de weergave sys.indexes. Automatisch gemaakte indexen blokkeren ALTER-/RENAME-opdrachten niet.
Als u de kolom met een automatisch gemaakte index wilt verwijderen, wordt de opdracht doorgegeven. De automatisch gemaakte index wordt ook verwijderd met de opdracht. Reguliere indexen blokkeren de opdracht ALTER/RENAME voor kolommen die worden geïndexeerd.
Nadat de aanbeveling voor het maken van de index is toegepast, vergelijkt Azure SQL Database de prestaties van de query's met de basislijnprestaties. Als de nieuwe index de prestaties verbetert, wordt de aanbeveling gemarkeerd als geslaagd en is het impactrapport beschikbaar. Als de index de prestaties niet heeft verbeterd, wordt deze automatisch teruggezet. Azure SQL Database maakt gebruik van dit proces om ervoor te zorgen dat aanbevelingen de databaseprestaties verbeteren.
Elke aanbeveling voor het maken van een index heeft een back-off-beleid dat het toepassen van de aanbeveling niet toestaat als het resourcegebruik van een database of pool hoog is. Het back-off-beleid houdt rekening met CPU, gegevens-IO, logboek-IO en beschikbare opslag.
Als de CPU, gegevens-I/O of logboek-IO in de afgelopen 30 minuten hoger is dan 80%, wordt de aanbeveling voor het maken van de index uitgesteld. Als de beschikbare opslag lager is dan 10% nadat de index is gemaakt, krijgt de aanbeveling een foutstatus. Als na een paar dagen automatisch afstemmen nog steeds denkt dat de index nuttig zou zijn, begint het proces opnieuw.
Dit proces wordt herhaald totdat er voldoende opslagruimte beschikbaar is om een index te maken of totdat de index niet meer als nuttig wordt gezien.
Aanbevelingen voor drop-index
Naast het detecteren van ontbrekende indexen, analyseert Azure SQL Database continu de prestaties van bestaande indexen. Als een index niet wordt gebruikt, adviseert Azure SQL Database de index te verwijderen. Het is in twee gevallen raadzaam om een index te verwijderen:
- De index is een duplicaat van een andere index (dezelfde geïndexeerde en opgenomen kolom, partitieschema en filters).
- De index is gedurende een langere periode (>90 dagen) niet gebruikt.
Aanbevelingen voor het verwijderen van indexen doorlopen ook de verificatie na de implementatie. Als de prestaties verbeteren, is het impactrapport beschikbaar. Als de prestaties verslechteren, wordt de aanbeveling teruggedraaid.
Aanbevelingen voor query's parameteriseren (preview)
Aanbevelingen voor query's parameteriseren worden weergegeven wanneer u een of meer query's hebt die voortdurend opnieuw worden gecompileerd, maar uiteindelijk hetzelfde queryuitvoeringsplan hebben. Met deze voorwaarde maakt u een mogelijkheid om geforceerde parameterisatie toe te passen. Met geforceerde parameterisatie kunnen queryplannen in de cache worden opgeslagen en opnieuw worden gebruikt in de toekomst, waardoor de prestaties worden verbeterd en het resourcegebruik wordt verminderd.
Elke query moet in eerste instantie worden gecompileerd om een uitvoeringsplan te genereren. Elk gegenereerd plan wordt toegevoegd aan de plancache. Volgende uitvoeringen van dezelfde query kunnen dit plan opnieuw gebruiken vanuit de cache, waardoor extra compilatie niet meer nodig is.
Query's met waarden zonder parameters kunnen leiden tot prestatie-overhead, omdat het uitvoeringsplan opnieuw wordt gecompileerd telkens wanneer de waarden zonder parameters verschillend zijn. In veel gevallen genereren dezelfde query's met verschillende parameterwaarden dezelfde uitvoeringsplannen. Deze plannen worden echter nog steeds afzonderlijk toegevoegd aan de plancache.
Het proces van het opnieuw compileren van uitvoeringsplannen maakt gebruik van databaseresources, verhoogt de duur van de query en overschrijdt de plancache. Deze gebeurtenissen zorgen ervoor dat er plannen uit de cache worden verwijderd. Dit gedrag kan worden gewijzigd door de optie voor geforceerde parameterisatie in de database in te stellen.
Om u te helpen de impact van deze aanbeveling te schatten, krijgt u een vergelijking tussen het werkelijke CPU-gebruik en het verwachte CPU-gebruik (alsof de aanbeveling is toegepast). Deze aanbeveling kan u helpen cpu-besparingen te krijgen. Het kan u ook helpen bij het verminderen van de queryduur en overhead voor de plancache, wat betekent dat meer van de plannen in de cache kunnen blijven en opnieuw kunnen worden gebruikt. U kunt deze aanbeveling snel toepassen door de opdracht Toepassen te selecteren.
Nadat u deze aanbeveling hebt toegepast, wordt geforceerde parameterisatie binnen enkele minuten in uw database ingeschakeld. Het begint het bewakingsproces, dat ongeveer 24 uur duurt. Na deze periode kunt u het validatierapport zien. Dit rapport toont het CPU-gebruik van uw database 24 uur voor en nadat de aanbeveling is toegepast. Azure SQL Database Advisor heeft een veiligheidsmechanisme dat de toegepaste aanbeveling automatisch terugdraait als er prestatieregressie is gedetecteerd.
Aanbevelingen voor schemaproblemen oplossen (preview)
Belangrijk
Microsoft beëindigt momenteel aanbevelingen voor het oplossen van schemaproblemen. We raden u aan Intelligent Insights te gebruiken om de prestatieproblemen van uw database te bewaken, inclusief schemaproblemen die eerder zijn besproken met de aanbevelingen voor het oplossen van schemaproblemen.
Aanbevelingen voor schemaproblemen oplossen worden weergegeven wanneer Azure SQL Database een anomalie opmerkt in het aantal schemagerelateerde SQL-fouten dat op uw database plaatsvindt. Deze aanbeveling wordt meestal weergegeven wanneer uw database binnen een uur meerdere schemagerelateerde fouten ondervindt (ongeldige kolomnaam, ongeldige objectnaam, enzovoort).
Schemaproblemen zijn een klasse syntaxisfouten. Ze vinden plaats wanneer de definitie van de SQL-query en de definitie van het databaseschema niet zijn uitgelijnd. Een van de kolommen die door de query worden verwacht, ontbreekt bijvoorbeeld in de doeltabel of omgekeerd.
De aanbeveling 'Schemaprobleem oplossen' wordt weergegeven wanneer In Azure SQL Database een anomalie optreedt in het aantal schemagerelateerde SQL-fouten dat op uw database optreedt. In de volgende tabel ziet u de fouten die betrekking hebben op schemaproblemen:
SQL-foutcode | Bericht |
---|---|
201 | Procedure of functie '' verwacht parameter '' die niet is opgegeven. |
207 | Ongeldige kolomnaam *. |
208 | Ongeldige objectnaam *. |
213 | De kolomnaam of het aantal opgegeven waarden komt niet overeen met de tabeldefinitie. |
2812 | Kan de opgeslagen procedure *niet vinden. |
8144 | Procedure of functie * heeft te veel argumenten opgegeven. |
Aangepaste toepassingen
Ontwikkelaars kunnen overwegen om aangepaste toepassingen te ontwikkelen met behulp van prestatieaankopen voor Azure SQL Database. Alle aanbevelingen die in de portal voor een database worden vermeld, kunnen worden geopend via de Get-AzSqlDatabaseRecommendedAction-API .
Volgende stappen
- Zie automatische afstemming van Azure SQL Database voor meer informatie over het automatisch afstemmen van databaseindexen en queryuitvoeringsplannen.
- Zie Azure SQL Intelligent Insights voor meer informatie over het automatisch bewaken van databaseprestaties met geautomatiseerde diagnostische gegevens en hoofdoorzaakanalyse van prestatieproblemen.
- Zie Inzichten in queryprestaties voor meer informatie over en bekijk de impact van de prestaties van uw belangrijkste query's.