Collection de données et jeux de données de l’observateur de base de données (aperçu)
S’applique à : Azure SQL Database Azure SQL Managed Instance
L’observateur de base de données collecte les données de surveillance à partir des vues système SQL et les ingère dans le magasin de données sous la forme de jeux de données. Chaque jeu de données est formé à l’aide des données d’une ou plusieurs vues système SQL. Pour chaque jeu de données, il existe une table distincte dans le magasin de données.
Collection de données
L’observateur de base de données collecte des données de surveillance à intervalles réguliers à l’aide de requêtes T-SQL. Les données collectées lors de chaque exécution d’une requête sont appelées échantillon. La fréquence de collecte d’échantillon varie selon le jeu de données. Par exemple, les données qui changent fréquemment, telles que les compteurs de performance SQL, peuvent être collectées toutes les 10 secondes, tandis que les données statiques, telles que la configuration de la base de données, peuvent être collectées toutes les cinq minutes. Pour plus d’informations, consultez Jeux de données.
L’observateur de base de données tire parti de l’ingestion en streaming dans Azure Data Explorer et l’Analyse en temps réel dans Microsoft Fabric pour fournir une surveillance en quasi-temps réel. En règle générale, les données de surveillance SQL collectées sont disponibles pour la génération de rapports et l’analyse en moins de 10 secondes. Vous pouvez surveiller la latence d’ingestion des données sur les tableaux de bord de l’observateur de base de données, à l’aide du lien des statistiques d’ingestion.
Interaction entre l’observateur de base de données et les charges de travail d’application
L’activation de l’observateur de base de données n’a probablement pas d’impact observable sur les performances de la charge de travail de l’application. Les requêtes de surveillance les plus fréquentes s’exécutent généralement en dessous de la seconde, tandis que les requêtes qui pourraient nécessiter plus de temps, par exemple pour renvoyer des jeux de données volumineux, s’exécutent à des intervalles peu fréquents.
Pour réduire davantage le risque d’impact sur les charges de travail d’application, toutes les requêtes de l’observateur de base de données dans Azure SQL Database sont régies par les ressources en tant que charge de travail interne. En cas de conflit de ressources, la consommation de ressources par les requêtes de surveillance est limitée à une petite fraction des ressources totales disponibles pour la base de données. Cela hiérarchise les charges de travail d’application par rapport aux requêtes de surveillance.
Pour éviter les conflits de concurrence tels que blocage et interblocages entre les charges de travail de collection de données et de base de données s’exécutant sur vos ressources Azure SQL, les requêtes de surveillance utilisent des dépassements de délai d’attente de verrou courts et une faible priorité d’interblocage. S’il existe un conflit d’accès concurrentiel, la priorité est donnée aux requêtes de charge de travail d’application.
Vous risquez de constater des lacunes dans les données collectées en cas d’utilisation globale des ressources élevée ou de conflits dus à des accès concurrentiels. Dans ces cas-là, les requêtes de surveillance peuvent perdre leur priorité au profit des charges de travail de l’application.
Collection de données dans des pools élastiques
Pour surveiller un pool élastique, vous devez désigner une base de données dans le pool comme base de données d’ancrage. L’observateur de base de données se connecte à la base de données d’ancrage. Étant donné que l’observateur détient l’autorisation VIEW SERVER PERFORMANCE STATE
, les vues système de la base de données d’ancrage fournissent des données de surveillance pour le pool dans son ensemble.
Conseil
Vous pouvez ajouter une base de données vide à chaque pool élastique que vous souhaitez surveiller et la désigner comme base de données d’ancrage. De cette façon, vous pouvez déplacer d’autres bases de données dans et hors du pool, ou entre des pools, sans interrompre la surveillance du pool élastique.
Les données collectées dans la base de données d’ancrage contiennent des mesures au niveau du pool ainsi que, pour chaque base de données du pool, certaines mesures de performance au niveau de la base de données, telles que l’utilisation des ressources et les mesures de taux de requête par base de données. Pour certains scénarios, l’ajout d’une cible SQL de pool élastique pour surveiller un pool élastique dans son ensemble peut rendre inutile la surveillance de chaque base de données individuelle dans le pool.
Certaines données de surveillance, telles que l’utilisation de l’UC, de la mémoire et du stockage au niveau du pool, ainsi que les statistiques d’attente ne sont collectées qu’au niveau du pool élastique, car elles ne peuvent pas être attribuées à une base de données individuelle dans un pool. À l’inverse, certaines autres données telles que les statistiques du runtime de requête, les propriétés de base de données et les métadonnées de table et d’index sont disponibles uniquement si vous ajoutez des bases de données individuelles en tant que cibles SQL.
Si vous ajoutez des bases de données individuelles à partir d’un pool élastique en tant que cibles SQL, vous devez également ajouter le pool élastique en tant que cible SQL. De cette façon, vous obtenez une vue plus complète des performances de la base de données et du pool.
Surveiller des pools élastiques denses
Un pool élastique dense contient un grand nombre de bases de données, mais a une taille de calcul relativement faible. Cette configuration permet aux clients de réaliser des économies substantielles en réduisant au minimum l’allocation des ressources de calcul, en partant du principe que seul un petit nombre de bases de données du pool sont actives en même temps.
Les ressources de calcul disponibles pour les requêtes de l’observateur de base de données dans un pool élastique dense sont encore plus limitées pour éviter d’affecter les requêtes de l’application. En raison de cela, l’observateur de base de données peut ne pas être en mesure de collecter des données de surveillance à partir de chaque base de données dans un pool élastique dense.
Conseil
Pour surveiller un pool élastique dense, activez la surveillance au niveau du pool en ajoutant le pool élastique en tant que cible SQL.
Il n’est pas recommandé de surveiller plus de quelques bases de données individuelles dans un pool élastique dense. Il se peut que vous constatiez des lacunes dans les données collectées ou des intervalles plus importants que prévu entre les échantillons de données, en raison de l’insuffisance des ressources de calcul disponibles pour les requêtes de l’observateur de base de données.
Résidence des données
Les clients peuvent choisir de stocker les données de surveillance SQL collectées dans l’un des trois types de magasin de données :
Une base de données sur un cluster Azure Data Explorer. Par défaut, un nouveau cluster Azure Data Explorer est créé pour chaque observateur et se trouve dans la même région Azure que ce dernier.
Les clients peuvent choisir la région Azure spécifique dans une zone géographique Azure comme emplacement pour leur cluster Azure Data Explorer et la base de données. Pour plus d’informations sur les fonctionnalités de réplication des données dans Azure Data Explorer, consultez Vue d’ensemble de la continuité d’activité et de la reprise d’activité.
Une base de données dans un cluster Azure Data Explorer gratuit.
Les clients peuvent choisir la zone géographique Azure spécifique, mais pas la région Azure spécifique comme emplacement pour leur cluster Azure Data Explorer gratuit et la base de données. La réplication de données vers une autre région ou zone géographique n’est pas prise en charge.
Une base de données dans Analyse en temps réel dans Microsoft Fabric.
Les clients ne peuvent pas choisir la localisation géographique de la base de données.
Pour pleinement contrôler la résidence des données pour les données de surveillance SQL collectées, les clients doivent choisir une base de données sur un cluster Azure Data Explorer comme magasin de données.
Les clients peuvent aligner la zone géographique et la région de leur cluster Azure Data Explorer sur la zone géographique et la région des ressources Azure SQL surveillées. Lorsque les ressources Azure SQL se trouvent dans plusieurs régions, les clients peuvent avoir besoin de créer plusieurs observateurs et clusters Azure Data Explorer pour répondre à leurs exigences de résidence des données.
Groupes de données
Cette section décrit les jeux de données disponibles pour chaque type de cible SQL, y compris les fréquences de collecte et les noms de tables dans le magasin de données.
Remarque
Pendant la phase d’aperçu, les jeux de données peuvent être ajoutés et supprimés. Les propriétés du jeu de données telles que le nom, la description, la fréquence de collecte et les colonnes disponibles sont susceptibles de changer.
Nom du jeu de données | Nom de table | Fréquence de collecte (hh:mm:ss) | Description |
---|---|---|---|
Sessions actives | sqldb_database_active_sessions |
00:00:30 |
Chaque ligne représente une session qui exécute une requête, qui est bloquante ou qui a une transaction ouverte. |
Historique de sauvegarde | sqldb_database_sql_backup_history |
00:05:00 |
Chaque ligne représente une sauvegarde de base de données terminée. |
Traitement des modifications | sqldb_database_change_processing |
00:01:00 |
Chaque ligne représente un instantané des statistiques d’analyse de journal agrégées pour une fonctionnalité de traitement des modifications, telle que la capture des changements de données ou le flux de modification (Azure Synapse Link). |
Erreurs de traitement des modifications | sqldb_database_change_processing_errors |
00:01:00 |
Chaque ligne représente une erreur qui s’est produite pendant le traitement des modifications, lors de l’utilisation d’une fonctionnalité de traitement des modifications, telle que la capture des changements de données ou le flux de modification (Azure Synapse Link). |
Connectivité | sqldb_database_connectivity |
00:00:30 |
Chaque ligne représente une sonde de connectivité (une connexion et une requête) pour une base de données. |
Géoréplicas | sqldb_database_geo_replicas |
00:00:30 |
Chaque ligne représente un géoréplica principal ou secondaire, y compris les métadonnées et les statistiques de géoréplication. |
Métadonnées d’index | sqldb_database_index_metadata |
00:30:00 |
Chaque ligne représente une partition d’index et inclut la définition d’index, les propriétés et les statistiques opérationnelles. |
Utilisation de la mémoire | sqldb_database_memory_utilization |
00:00:10 |
Chaque ligne représente un régisseur de mémoire et inclut la consommation de mémoire par le régisseur sur l’instance du moteur de base de données. |
Index manquants | sqldb_database_missing_indexes |
00:15:00 |
Chaque ligne représente un index dont la création est susceptible d’améliorer les performances de la requête. |
Événements de mémoire insuffisante | sqldb_database_oom_events |
00:01:00 |
Chaque ligne représente un événement mémoire insuffisante dans le moteur de base de données. |
Compteurs de performances (courants) | sqldb_database_performance_counters_common |
00:00:10 |
Chaque ligne représente un compteur de performances de l’instance du moteur de base de données. Ce jeu de données inclut des compteurs couramment utilisés. |
Compteurs de performances (détaillés) | sqldb_database_performance_counters_detailed |
00:01:00 |
Chaque ligne représente un compteur de performances de l’instance du moteur de base de données. Ce jeu de données inclut des compteurs qui peuvent être nécessaires pour une surveillance et une résolution des problèmes détaillées. |
Propriétés | sqldb_database_properties |
00:05:00 |
Chaque ligne représente une base de données et inclut des options de base de données, des limites de gouvernance des ressources et d’autres métadonnées de base de données. |
Statistiques d’exécution des requêtes | sqldb_database_query_runtime_stats |
00:15:00 |
Chaque ligne représente un intervalle d’exécution du Magasin des requêtes et inclut des statistiques d’exécution de requête. |
Statistiques d’attente des requêtes | sqldb_database_query_wait_stats |
00:15:00 |
Chaque ligne représente un intervalle d’exécution du Magasin des requêtes et inclut des statistiques de catégorie d’attente. |
Réplicas | sqldb_database_replicas |
00:00:10 |
Chaque ligne représente un réplica de base de données, y compris les métadonnées de réplication et les statistiques. Inclut le réplica principal et les géoréplicas lorsqu’ils sont collectés sur le réplica principal et les réplicas secondaires lorsqu’ils sont collectés sur un réplica secondaire. |
Utilisation des ressources | sqldb_database_resource_utilization |
00:00:15 |
Chaque ligne représente les statistiques de consommation de l’UC, des E/S de données, des E/S de journal et d’autres ressources pour une base de données dans un intervalle de temps. |
Statistiques de session | sqldb_database_session_stats |
00:01:00 |
Chaque ligne représente un résumé des statistiques de session pour une base de données, agrégées par des attributs de session non additifs tels que le nom de connexion, le nom d’hôte, le nom d’application, etc. |
Planificateurs SOS | sqldb_database_sos_schedulers |
00:01:00 |
Chaque ligne représente un planificateur SOS et inclut des statistiques pour le planificateur, le nœud de processeur et le nœud de mémoire. |
E/S de stockage | sqldb_database_storage_io |
00:00:10 |
Chaque ligne représente un fichier de base de données et inclut des statistiques cumulatives d’IOPS, de débit et de latence pour le fichier. |
Utilisation du stockage | sqldb_database_storage_utilization |
00:01:00 |
Chaque ligne représente une base de données et inclut son utilisation du stockage, notamment tempdb , le Magasin des requêtes et le magasin de versions persistantes. |
Métadonnées de table | sqldb_database_table_metadata |
00:30:00 |
Chaque ligne représente une table ou une vue indexée et inclut des métadonnées telles que le nombre de lignes, l’utilisation de l’espace, la compression des données, les colonnes et les contraintes. |
Statistiques d’attente | sqldb_database_wait_stats |
00:00:10 |
Chaque ligne représente un type d’attente et inclut des statistiques d’attente cumulatives de l’instance du moteur de base de données. Pour les bases de données d’un pool élastique, seules les statistiques d’attente limitées à l’étendue de la base de données sont collectées. |
Remarque
Pour les bases de données d’un pool élastique, les jeux de données SQL Database contenant des données au niveau du pool ne sont pas collectés. Cela inclut les jeux de données Utilisation de la mémoire, Événements de mémoire insuffisante, Compteurs de performances (courants) et Compteurs de performances (détaillés). Le jeu de données Statistiques d’attente est collecté, mais ne contient que des attentes limitées à l’étendue de la base de données. Cela permet d’éviter de collecter les mêmes données depuis chaque base de données du groupe.
Les données au niveau du pool sont collectées dans les jeux de données Pool élastique SQL. Pour un pool élastique donné, les jeux de données Compteurs de performance (communs) et Compteurs de performance (détaillés) contiennent des métriques au niveau du pool et certaines métriques au niveau de la base de données, telles que UC, E/S de données, écriture de journal, requêtes, transactions, etc.
Colonnes courantes
Pour chaque type de cible SQL, les jeux de données ont des colonnes communes, comme décrit dans les tableaux suivants.
Nom de colonne | Description |
---|---|
subscription_id |
L’ID d’abonnement Azure de la base de données SQL. |
resource_group_name |
Le nom du groupe de ressources de la base de données SQL. |
resource_id |
ID de ressource Azure de la base de données SQL. |
sample_time_utc |
Heure à laquelle les valeurs de la ligne ont été observées, au format UTC. |
collection_time_utc |
Heure à laquelle la ligne a été collectée par l’observateur, au format UTC. Cette colonne est présente dans les jeux de données où l’heure de collecte peut être différente de l’heure de l’échantillon. |
replica_type |
L’un des éléments suivants : primaire, secondaire HA, redirecteur de géoréplication, secondaire nommé. |
logical_server_name |
Nom du serveur logique dans Azure SQL Database contenant la base de données ou le pool élastique surveillé. |
database_name |
Nom de la base de données surveilllée. |
database_id |
ID de la base de données surveillée, unique au sein du serveur logique. |
logical_database_id |
Un identificateur de base de données unique qui reste inchangé pendant la durée de vie de la base de données utilisateur. Le changement de nom de la base de données ou la modification de son objectif de service ne modifient pas cette valeur. |
physical_database_id |
Un identificateur de base de données unique pour la base de données physique actuelle correspondant à la base de données utilisateur. Le changement de l’objectif du service de base de données entraîne la modification de cette valeur. |
replica_id |
Un identificateur unique d’un réplica de calcul Hyperscale. |
Un jeu de données comporte à la fois des colonnes sample_time_utc
et collection_time_utc
s’il contient des échantillons observés avant la collecte de la ligne par l’observateur de base de données. Sinon, le temps d’observation et l’heure de collecte sont identiques, et le jeu de données ne contient que la colonne sample_time_utc
.
Par exemple, le jeu de données sqldb_database_resource_utilization
est dérivé de la vue de gestion dynamique (DMV) sys.dm_db_resource_stats. La DMV contient la colonne end_time
, qui correspond au temps d’observation de chaque ligne signalant les statistiques de ressources agrégées pour un intervalle de 15 secondes. Cette fois-ci est signalée dans la colonne sample_time_utc
. Lorsque l’observateur de base de données interroge cette DMV, le jeu de résultats peut contenir plusieurs lignes, chacune avec une valeur end_time
différente. Toutes ces lignes ont la même valeur collection_time_utc
.
Contenu connexe
- Surveiller les charges de travail Azure SQL avec l’observateur de base de données (aperçu)
- Démarrage rapide : créer un observateur de base de données pour surveiller Azure SQL (aperçu)
- Créer et configurer un observateur de base de données (aperçu)
- Analyser les données de surveillance de l’observateur de base de données (aperçu)
- FAQ au sujet de l’observateur de base de données