Microsoft heeft onlangs een ongelooflijke nieuwe functie aangekondigd:automatisch afstemmen in Azure SQL Database. Om eerlijk te zijn, ben ik diep onder de indruk van deze functie omdat Microsoft-technici op geavanceerde wijze kunstmatige intelligentie hebben gebruikt bij het afstemmen van SQL Azure-prestaties. Het doel is om de Azure SQL-database te bewaken en deze observaties naar de ingebouwde inlichtingendienst te sturen die enkele aanbevelingen genereert. Ze kunnen in de daluren worden toegepast. Deze functie heeft ook het werk van databasebeheerders vereenvoudigd; ze hoeven zich nu geen zorgen te maken over de prestaties van de SQL Azure-database.
Er is een belangrijk punt over automatische afstemming van SQL Azure in de MSDN-documentatie:"Automatisch afstemmen leert horizontaal van alle databases op Azure via kunstmatige intelligentie en verbetert dynamisch de afstemmingsacties". Het betekent dat het kunstmatige intelligentie-algoritme enorme ervaring leert van verschillende SQL Azure-databases. Om deze reden zullen deze aanbevelingen betrouwbaar zijn. De automatische afstemmingsfunctie kan ook aanbevelingen terugdraaien en zichzelf corrigeren.
Een andere interessante optie over deze functie zijn meldingen. Microsoft vergroot het vertrouwen van deze functie door te zeggen dat het in sommige bedrijven is geïmplementeerd. Misschien is deze aanpak een beetje utopisch, maar in de toekomst zal kunstmatige intelligentie veel verantwoordelijkheden krijgen van databasebeheerders. Daarom zal het aantal taken voor databasebeheerders worden verminderd.
Om deze functie te testen, heb ik twee tabellen op Azure SQL gemaakt en deze gevuld met wat gegevens. Nadat ik deze testgegevens had gegenereerd, voerde ik veel query's uit waarvoor dezelfde niet-geclusterde indexen nodig waren. Toen ik het geschatte uitvoeringsplan voor query's onderzocht, ontdekte ik dat het een niet-geclusterde index suggereerde. Ongeveer na 30 uur heeft Azure SQL automatische afstemming een aanbeveling gegenereerd om een index te maken. Voor deze wachttijd merkt Microsoft op dat "Azure SQL Database activiteiten minstens een dag moet controleren om enkele aanbevelingen te identificeren". Deze afstemmingsaanbevelingsindex is gelijk aan de ontbrekende index. Toen de automatische afstemming probeerde het script uit te voeren, was er een fout vanwege de beperkte schijfruimte.
/* Missing Index Details from SQLQuery1.sql - xxxx.database.windows.net.Adventureworks (esat.erkec) The Query Processor estimates that implementing the following index could improve the query cost by 99.6269%. */ /* USE [Adventureworks] GO CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[Salesd] ([SalesOrderID]) GO */
Automatische afstemmingsopties zijn als volgt:
- Index maken die de automatische indexcreatie identificeert die de prestaties kan beïnvloeden.
- Index laten vallen die ongebruikte of overtollige indexen identificeert.
- Laatste plan goed afdwingen die SQL-queryplannen definieert die slechter zijn dan de vorige. Deze functie verwijst naar automatische plancorrectie in SQL Server 2017.
Automatische afstemming van Azure SQL inschakelen
Met Azure Portal- of T-SQL-query's kunt u automatische afstemmingsopties inschakelen. Deze functie kan tegelijkertijd automatisch afstemmen op server- of databaseniveau inschakelen. Het databaseniveau kan deze opties erven van het serverniveau.
Nu gaan we verbinding maken met Azure Portal en SQL-servers zoeken.
Zoek vervolgens naar automatische afstemmingsopties.
Op deze schermafbeelding kunnen we automatische afstemmingsopties wijzigen en toepassen op serverniveau en in de standaardinstelling. Alle databases worden overgenomen van het serverniveau. We kunnen deze optie echter ook op databaseniveau wijzigen.
De optie Huidige status definieert de huidige status van de automatische afstemmingsoptie. Microsoft biedt aan om deze functie op serverniveau te beheren, omdat de instellingen op alle databases kunnen worden toegepast.
Nu gaan we kijken naar de automatische afstemmingsopties op databaseniveau. We kunnen deze opties vinden in SQL-databases.
Zoals je kunt zien, kunnen we automatische afstemmingsopties instellen voor een individuele database en de overervingsopties wijzigen.
De bovenstaande schermafbeelding identificeert de volgende opties:
- De Force Plan-status is "AAN" en overgenomen van het serverniveau waarvan de status "AAN" is.
- De status Index maken is "UIT" en overgenomen van serverniveau. De status is "UIT".
- Drop Index-status is "AAN" en deze optie is alleen ingesteld voor deze database. Het serverniveau is niet belangrijk voor deze instelling.
We kunnen automatisch afstemmen via T-SQL inschakelen:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
Bij deze stap zullen we kijken naar de aanbevelingen voor automatische afstemming onder het SQL Server-menu.
Bovendien vindt u aanbevelingen voor automatische afstemming onder het databasemenu.
Aanbevelingen voor afstemmen hebben verschillende statussen:
- In behandeling: Aanbevelingsopdracht toepassen is ontvangen en is gepland voor uitvoering.
- Uitvoeren: De aanbeveling wordt toegepast.
- Verifiëren: Aanbeveling is met succes toegepast en de service meet de voordelen.
- Succes: Aanbeveling is met succes toegepast en de voordelen zijn gemeten.
- Fout: Er is een fout opgetreden tijdens het toepassen van de aanbeveling. Dit kan een tijdelijk probleem zijn of een schemawijziging in de tabel en het script is niet langer geldig.
- Terugzetten: De aanbeveling is toegepast, maar is als niet-performant beschouwd en wordt automatisch teruggedraaid.
- Teruggedraaid: De aanbeveling is teruggedraaid.
Wanneer automatisch afstemmen een aanbeveling maakt die zich onder het tabblad Aanbevelingen bevindt, is de status in behandeling. Wanneer de afstemmingsaanbevelingsstatus wordt uitgevoerd, voortgang, succes of fout is, wordt deze weergegeven op het tabblad Afstemmingsgeschiedenis. Tegelijkertijd kan sys.dm_db_tuning_recommendations informatie retourneren over automatische afstemmingsaanbevelingen.
SELECT name, JSON_VALUE(state, '$.currentValue') as script, JSON_VALUE(details, '$.implementationDetails.script') as script, details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY OPENJSON(details, '$.createIndexDetails') WITH ( indexName VARCHAR(100) '$.indexName', indexType VARCHAR(100) '$.indexType', table_name VARCHAR(100) '$.table') as details
Als we op Aanbeveling klikken, kunnen we wat details vinden over afstemmingsaanbevelingen.
We kunnen veel nuttige informatie krijgen over afstemmingsaanbevelingen en een script van deze functie genereren.
De details die het script teruggeeft zijn als volgt:
- Impact definieert een prioriteitsniveau van afstemmingsaanbevelingen.
- Schijfruimte nodig definieert het verbruik van opslag.
- Indextype bepaalt welk type index het zal maken.
Conclusies
Naar mijn mening is automatische afstemming van SQL Azure een functie van de nieuwe generatie omdat Microsoft kunstmatige intelligentie-algoritmen begint te gebruiken bij afstemmingsaanbevelingen. Tegelijkertijd kan deze functie tot de volgende vragen leiden:
- Wanneer moet ik deze afstemmingsaanbeveling hebben?
- Is deze afstemmingsaanbeveling nuttig? Als het niet nuttig is, wanneer moet ik deze afstemmingsaanbeveling dan terugdraaien?
Als gevolg hiervan biedt automatische afstemming van SQL Azure een futuristische benadering.
Referenties
Automatisch afstemmen in Azure SQL Database
Prestaties afstemmen in Azure SQL Database
Kunstmatige intelligentie stemt Azure SQL-databases af