Surveiller les performances de la base de données
Une partie importante des techniques de résolution des problèmes que vous utiliseriez pour résoudre les problèmes de performances de base de données est la même que dans Azure SQL.
Tous les outils généralement utilisés pour la surveillance et la résolution des problèmes SQL Server s’appliquent également au SQL Server s’exécutant sur une machine virtuelle Azure, y compris des outils comme Analyseur de performances. Toutefois, en raison de leur nature Platform as a service (PaaS), Azure SQL Database et Azure SQL Managed Instance fournissent un ensemble différent d’outils. Ensuite, nous allons explorer les outils spécifiques des offres PaaS d’Azure et leurs fonctionnalités.
Comparer les résultats des performances avec votre base de référence
Le processus d’établissement d’une base de référence commence généralement bien avant la réelle migration de base de données. Cela implique la collecte d’un ensemble complet de mesures de données qui reflètent les performances standard de la base de données dans son environnement d’origine. Ces mesures peuvent inclure, sans s’y limiter, l’utilisation du processeur, les temps de réponse, les taux de transaction et les taux d’erreur.
Cette base de référence sert de point de référence par rapport auquel les performances de la base de données migrée peuvent être comparées. Toutefois, l’évaluation ou la comparaison de ces données de base de référence avec les métriques de performances de la base de données migrée n’a lieu qu’une fois la migration terminée.
Après la migration, les performances du nouvel environnement de base de données sont surveillées et mesurées. Ces métriques post-migration sont ensuite comparées à la base de référence avant la migration pour identifier les différences ou les problèmes de performances. Cette comparaison permet de comprendre si la migration a eu des effets négatifs sur les performances de la base de données ou s’il existe des domaines qui nécessitent une optimisation pour améliorer les performances.
Réglage automatique
Le réglage automatique est une fonctionnalité qui apprend en permanence de votre charge de travail, qui identifie les problèmes potentiels et les améliorations, et qui propose des recommandations basées sur les données du Magasin des requêtes. Il s’adapte aux modifications des plans d’exécution provoquées par des modifications de schéma ou d’index, ou aux mises à jour de données.
Vous pouvez appliquer manuellement les recommandations de réglage à l’aide du portail Azure ou laisser le réglage automatique les appliquer pour vous en toute autonomie. Dans Azure SQL Database, il peut également améliorer les performances des requêtes en paramétrant les index.
Correction de plan automatique
Avec l’aide du Magasin des requêtes, le moteur de base de données peut détecter les régressions des performances des plans d’exécution des requêtes. Même si vous pouvez identifier manuellement un plan qui a connu une baisse de performances par le biais de l’interface utilisateur, le Magasin des requêtes permet quant à lui d’être averti automatiquement.
Dans l’exemple donné, une coche apparaît en regard de l’ID de plan 1, indiquant que le plan est forcé.
Une fois que vous avez activé le réglage automatique, le moteur de base de données applique automatiquement tout plan d’exécution de requête suggéré dans les conditions suivantes :
- Le taux d’erreur du plan précédent dépasse celui du plan recommandé
- Le gain estimé du processeur dépasse 10 secondes
- Le plan forcé est plus performant que le précédent
Lors d’un forçage automatique du plan, le moteur de base de données applique le dernier bon plan et surveille ses performances. Si le plan forcé n’est pas plus performant que le plan précédent, son forçage est annulé, et un nouveau plan est compilé. S’il surclasse le plan précédent, il reste forcé jusqu’à ce qu’une recompilation se produise.
Utilisez la requête T-SQL suivante pour activer la correction automatique du plan.
ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
Vous pouvez afficher les recommandations de réglage automatique grâce à la vue de gestion dynamique (DMV), sys.dm_db_tuning_recommendations
. Cette DMV fournit des détails, des types et des états de recommandation. Pour vérifier que le paramétrage automatique est activé pour une base de données, consultez la vue sys.database_automatic_tuning_options
.
Le réglage automatique Azure SQL Managed Instance prend uniquement en charge FORCE LAST GOOD PLAN
.
Pour activer les notifications de réglage automatique, consultez Notifications par e-mail du réglage automatique
Gestion automatique des index
Azure SQL Database prend en charge le réglage automatique des index. Cela signifie qu’avec le temps, la base de données peut connaître les charges de travail existantes et fournira des recommandations concernant l’ajout ou la suppression d’index afin d’offrir de meilleures performances. Comme pour le forçage de plans de requête améliorés, la base de données peut être configurée de manière à permettre la création ou la suppression automatique d’index en fonction des performances d’index existantes.
Vous pouvez également utiliser la requête suivante pour voir les fonctionnalités de réglage automatique activées dans votre base de données.
SELECT name,
desired_state_desc,
actual_state_desc,
reason_desc
FROM sys.database_automatic_tuning_options
La création d’index nécessite beaucoup de ressources, et la réussite de sa création est essentielle pour garantir aucun effet négatif sur vos charges de travail.
Azure SQL Database surveille les ressources nécessaires pour implémenter automatiquement de nouveaux index afin d’éviter toute dégradation des performances. L’action de paramétrage est retardée jusqu’à ce que les ressources soient disponibles, par exemple, lorsque les ressources nécessaires aux charges de travail existantes empêchent la création d’index.
Explorer Query Performance Insight
La phase initiale de toute tâche d’optimisation des performances de base de données implique d’identifier les requêtes les plus gourmandes en ressources. Dans les versions SQL Server précédentes, cela nécessitait un suivi complet et un ensemble de scripts SQL complexes, ce qui rendait le processus de collecte de données laborieux.
Identifier les requêtes problématiques
Azure SQL Database propose un outil appelé Query Performance Insight (analyse des performances des requêtes), qui permet à l’administrateur d’identifier rapidement les requêtes coûteuses. Vous le trouverez dans le panneau principal d’Azure SQL Database, sous la section Performances intelligentes.
Query Performance Insight dans Azure SQL Database fournit trois options de filtrage : pour les requêtes de longue durée, les principales requêtes consommatrices de ressources (la valeur par défaut) ou un filtre personnalisé. Il affiche les cinq principales requêtes triées par une ressource choisie, telle que le processeur, les E/S de données ou les E/S de journal. Vous pouvez accéder à chaque requête en sélectionnant la ligne correspondant dans la grille du bas. Chaque ligne est marquée d’une couleur distincte qui correspond à la couleur dans le graphique à barres.
L’onglet personnalisé offre plus de flexibilité que les autres options. Il permet un examen plus personnalisé des données de performances avec plusieurs menus déroulants influençant la visualisation des données. Les métriques clés incluent le processeur, les E/S de journal, les E/S de données et la mémoire, qui sont des aspects de performances limités par le niveau de service et les ressources de calcul de votre base de données Azure SQL.
Si nous explorons une requête, nous voyons l’ID de requête et la requête elle-même, ainsi que le type d’agrégation de la requête et la période associée.
Même si Query Performance Insight n’affiche pas le plan d’exécution de la requête, vous pouvez rapidement identifier cette requête et utiliser les informations fournies afin d’extraire le plan du Magasin des requêtes de votre base de données.
Alertes
Vous pouvez définir des alertes de performances pour vos bases de données dans Azure SQL Database à l’aide du portail Azure. Ces alertes peuvent vous avertir par e-mail ou appeler un webhook lorsqu’une certaine métrique (comme la taille de la base de données ou l’utilisation du processeur) atteint un certain seuil.
Les processus de configuration d’alertes de SQL Database et de SQL Managed Instance sont similaires. Pour configurer des alertes de performances pour Azure SQL Database, accédez à la section Monitoring et sélectionnez Alertes. À partir de là, vous devez établir une nouvelle règle d’alerte, définir une condition et créer un groupe d’actions.
Pour plus d’informations sur les alertes pour Azure SQL Managed Instance, consultez Créer des alertes pour Azure SQL Managed Instance à l’aide du portail Azure. Si Azure SQL Database vous intéresse, consultez Créer des alertes pour Azure SQL Database et Azure Synapse Analytics à l’aide du portail Azure.
Azure SQL Insights
Azure SQL Insights améliore votre expérience de supervision en fournissant des visualisations interactives et prêtes à l’emploi. Vous pouvez personnaliser la collecte et la fréquence de la télémétrie, et combiner les données de plusieurs sources dans une seule expérience de supervision. Il conserve également un ensemble de métriques dans le temps, ce qui vous permet d’investiguer les problèmes de performances que vous avez pu rencontrer dans le passé.
Important
Nous vous suggérons de configurer Azure SQL Insights uniquement lorsque la base de données migrée a été entièrement intégrée en production. Cela empêche l’outil de capturer des données bruyantes pendant la phase de migration et de test.
Pour commencer à utiliser SQL Insights, vous avez besoin d’une machine virtuelle dédiée qui supervise et collecte à distance des données à partir de vos serveurs SQL. Cette machine virtuelle dédiée doit avoir les composants suivants installés :
- Agent Azure Monitor
- Extension Workload Insights
En outre, les composants suivants sont requis pour configurer SQL Insights.
Profil de supervision – serveurs de groupe, instances ou bases de données à surveiller.
Espace de travail Log Analytics – endroit où envoyer les données de supervision SQL.
Paramètres de collecte – vous pouvez personnaliser la collecte de données pour votre profil. Les paramètres par défaut couvrent la plupart des scénarios de supervision et n’ont généralement pas besoin d’être modifiés.
Événements étendus
L’outil Événements étendus est un système de supervision robuste qui capture l’activité détaillée des serveurs et des bases de données. Des filtres peuvent être appliqués pour réduire la surcharge de collecte de données et se concentrer sur des problèmes de performances spécifiques. Toutes les offres Azure SQL prennent en charge Événements étendus.
Bien que la configuration d’Événements étendus soit similaire sur SQL Server, Azure SQL Database et Azure SQL Managed Instance, ce module se concentre sur leurs différences, et non sur l’enseignement du processus de configuration.
Voici quelques différences clés lors de la configuration d’événements étendus sur Azure SQL Database :
Transact-SQL : lors de l’exécution de la
CREATE EVENT SESSION
commande sur SQL Server, vous utilisez la clauseON SERVER
. Mais sur Azure SQL Database, vous utilisez la clauseON DATABASE
à la place. La clauseON DATABASE
s’applique également aux commandes Transact-SQLALTER EVENT SESSION
etDROP EVENT SESSION
. Azure SQL Database prend en charge uniquement les sessions incluses dans l’étendue de la base de données.Sessions étendues à la base de données : les événements étendus sont fondés sur le modèle d’isolation monolocataire dans Azure SQL Database. Une session d’événements d’une base de données ne peut pas accéder aux données ou événements d’une autre base de données. Vous ne pouvez pas émettre une instruction
CREATE EVENT SESSION
dans le contexte de la base de données MASTER¹.Stockage : étant donné que vous n’avez pas accès au système de fichiers du serveur sur lequel se trouve votre base de données dans Azure SQL Database, vous pouvez configurer une cible de compte de stockage pour stocker vos sessions d’événements étendus.