Microsoft a récemment annoncé une nouvelle fonctionnalité incroyable :le réglage automatique dans Azure SQL Database. Pour être honnête, je suis très impressionné par cette fonctionnalité car les ingénieurs de Microsoft ont utilisé de manière sophistiquée l'intelligence artificielle dans le réglage des performances de SQL Azure. L'objectif est de surveiller la base de données Azure SQL et d'envoyer ces observations au service d'intelligence intégré qui génère des recommandations. Ils peuvent être appliqués aux heures creuses. Cette fonctionnalité a également simplifié le travail des administrateurs de bases de données; ils n'ont plus à se soucier des performances de la base de données SQL Azure maintenant.
Il y a un point clé sur le réglage automatique de SQL Azure dans la documentation MSDN "Le réglage automatique apprend horizontalement à partir de toutes les bases de données sur Azure via l'intelligence artificielle et améliore dynamiquement ses actions de réglage". Cela signifie que l'algorithme d'intelligence artificielle apprend une grande expérience de différentes bases de données SQL Azure. Pour cette raison, ces recommandations seront fiables. La fonction de réglage automatique peut également annuler les recommandations et se corriger elle-même.
Une autre option intéressante à propos de cette fonctionnalité est les notifications. Microsoft renforce la confiance dans cette fonctionnalité en affirmant qu'elle est implémentée dans certaines entreprises. Peut-être que cette approche peut être un peu utopique, mais à l'avenir, l'intelligence artificielle aura beaucoup de responsabilités d'administrateurs de bases de données. Par conséquent, le nombre de tâches pour les administrateurs de base de données sera réduit.
Pour tester cette fonctionnalité, j'ai créé deux tables sur Azure SQL et je les ai remplies avec des données. Après avoir généré ces données de test, j'ai exécuté de nombreuses requêtes nécessitant les mêmes index non clusterisés. Lorsque j'ai examiné le plan d'exécution de requête estimé, j'ai constaté qu'il suggérait un index non clusterisé. Environ 30 heures plus tard, le réglage automatique d'Azure SQL a généré une recommandation pour créer un index. Pour ce temps d'attente, Microsoft note qu'"Azure SQL Database a besoin de surveiller les activités au moins pendant une journée afin d'identifier certaines recommandations". Cet index de recommandation de réglage est le même que l'index manquant. Lorsque le réglage automatique a tenté d'exécuter le script, une erreur s'est produite en raison d'un espace disque limité.
/* 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 */
Les options de réglage automatique sont les suivantes :
- Créer un index qui identifie la création automatique d'index susceptible d'affecter les performances.
- Supprimer l'index qui identifie les index inutilisés ou redondants.
- Forcer le bon dernier plan qui définit des plans de requête SQL pires que les précédents. Cette fonctionnalité fait référence à la correction automatique du plan dans SQL Server 2017.
Comment activer le réglage automatique d'Azure SQL
Les requêtes Azure Portal ou T-SQL permettent d'activer les options de réglage automatique. Cette fonctionnalité peut activer le réglage automatique au niveau du serveur ou de la base de données en même temps. Le niveau de la base de données peut hériter de ces options du niveau du serveur.
Maintenant, nous allons nous connecter au portail Azure et trouver des serveurs SQL.
Ensuite, recherchez les options de réglage automatique.
Sur cette capture d'écran, nous pouvons modifier et appliquer les options de réglage automatique au niveau du serveur et dans le paramètre par défaut. Toutes les bases de données sont héritées du niveau serveur. Cependant, nous pouvons également modifier cette option au niveau de la base de données.
L'option État actuel définit l'état actuel de l'option de réglage automatique. Microsoft propose de gérer cette fonctionnalité au niveau du serveur car ses paramètres peuvent être appliqués à toutes les bases de données.
Nous allons maintenant examiner les options de réglage automatique au niveau de la base de données. Nous pouvons trouver ces options sur les bases de données SQL.
Comme vous pouvez le constater, nous pouvons définir des options de réglage automatique pour une base de données individuelle et modifier les options d'héritage.
La capture d'écran ci-dessus identifie les options suivantes :
- L'état du plan de forçage est "ON" et hérité du niveau de serveur dont l'état est "ON".
- L'état de la création d'index est "OFF" et hérité du niveau du serveur. Son état est "OFF".
- L'état de suppression de l'index est "ON" et cette option est définie uniquement pour cette base de données. Le niveau du serveur n'est pas important pour ce paramètre.
Nous pouvons activer le réglage automatique via T-SQL :
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
À cette étape, nous examinerons les recommandations de réglage automatique situées sous le menu SQL Server.
De plus, des recommandations de réglage automatique peuvent être trouvées sous le menu de la base de données.
Les recommandations de réglage ont différents statuts :
- En attente : La commande Appliquer la recommandation a été reçue et son exécution est planifiée.
- Exécution : La recommandation est en cours d'application.
- Vérification : La recommandation a été appliquée avec succès et le service mesure les avantages.
- Réussite : La recommandation a été appliquée avec succès et les avantages ont été mesurés.
- Erreur : Une erreur s'est produite lors du processus d'application de la recommandation. Il peut s'agir d'un problème transitoire ou d'une modification du schéma de la table et le script n'est plus valide.
- Annulation : La recommandation a été appliquée, mais a été jugée non performante et est automatiquement annulée.
- Annulé : La recommandation a été annulée.
Lorsque le réglage automatique crée une recommandation qui sera située sous l'onglet Recommandations, le statut sera en attente. Lorsque l'état de la recommandation de réglage est en cours d'exécution, progression, succès ou erreur, il s'affiche sous l'onglet Historique de réglage. Dans le même temps, sys.dm_db_tuning_recommendations peut renvoyer des informations sur les recommandations de réglage automatique.
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
Lorsque nous cliquons sur Recommandation, nous pouvons trouver des détails sur la recommandation de réglage.
Nous pouvons obtenir de nombreuses informations utiles sur les recommandations de réglage et générer un script de cette fonctionnalité.
Les détails que le script renverra sont les suivants :
- Impact définit un niveau de priorité de recommandation de réglage.
- Espace disque nécessaire définit la consommation de stockage.
- Type d'index définit le type d'index qu'il va créer.
Conclusion
À mon avis, le réglage automatique de SQL Azure est une fonctionnalité de nouvelle génération car Microsoft commence à utiliser des algorithmes d'intelligence artificielle dans les recommandations de réglage. En même temps, cette fonctionnalité peut conduire aux questions suivantes :
- Quand devrais-je recevoir cette recommandation de réglage ?
- Cette recommandation de réglage est-elle utile ? Si cela n'est pas utile, quand dois-je annuler cette recommandation de réglage ?
Par conséquent, le réglage automatique de SQL Azure offre une approche futuriste.
Références
Réglage automatique dans Azure SQL Database
Réglage des performances dans Azure SQL Database
L'intelligence artificielle optimise les bases de données Azure SQL