Partager via


Collection de données et jeux de données de l’observateur de base de données (préversion)

S’applique à :Azure SQL DatabaseAzure SQL Managed Instance

L’observateur de base de données collecte les données de monitoring à 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. Le magasin de données comporte une table distincte pour chaque jeu de données.

Collection de données

L’observateur de base de données collecte des données de monitoring à 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 collection d’échantillon varie selon le jeu de données. Par exemple, les données changeant 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 en savoir plus, consultez Jeux de données.

L’observateur de base de données tire parti de l’ingestion en streaming dans Azure Data Explorer et Real-Time Analytics dans Microsoft Fabric pour fournir un monitoring en quasi-temps réel. En général, les données de monitoring SQL collectées sont disponibles pour le reporting et l’analyse en moins de 10 secondes. Vous pouvez monitorer la latence d’ingestion des données sur les tableaux de bord de l’observateur de base de données, à l’aide du lien Statistiques d’ingestion.

Interactions 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 des charges de travail d’application. Les requêtes de monitoring les plus fréquentes s’exécutent généralement sous 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 contention de ressources, la consommation de ressources par les requêtes de monitoring est limitée à une petite fraction des ressources totales disponibles pour la base de données. Ainsi, les charges de travail d’application sont hiérarchisées par rapport aux requêtes de monitoring.

Les requêtes de monitoring permettent d’éviter les conflits d’accès concurrentiel tels que les blocages et les 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 à l’aide de délais d’attente de verrou courts et d’une faible priorité d’interblocage. En cas de conflit d’accès concurrentiel, la priorité est donnée aux requêtes de charge de travail d’application.

Vous pouvez observer des lacunes dans les données collectées dans les scénarios suivants :

  • Si l’utilisation globale des ressources est élevée ou si des conflits d’accès concurrentiel entre les requêtes de surveillance et les charges de travail d’application se produisent. Dans ce cas, les requêtes de surveillance sont déprioritisées en faveur des charges de travail d’application.
  • Si vous disposez d’une automatisation qui met fin à de longues sessions. Pour éviter les lacunes dans les données collectées, excluez toute session où la program_name colonne de la vue système sys.dm_exec_sessions est SQLExternalMonitoring ou x_ms_reserved_sql_external_monitoring.

Collection de données dans des pools élastiques

Pour monitorer un pool élastique, vous devez désigner une base de données dans le pool comme base de données d’ancrage. Un observateur se connecte à la base de données d’ancrage. Comme 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 monitoring pour le pool dans son ensemble.

Conseil

Vous pouvez ajouter une base de données vide à chaque pool élastique que vous souhaitez monitorer et la désigner comme base de données d’ancrage. Ainsi, vous pouvez déplacer d’autres bases de données dans le pool et hors de celui-ci, ou entre des pools, sans interrompre le monitoring du pool élastique.

Les données collectées dans la base de données d’ancrage comportent des mesures au niveau du pool et, pour chaque base de données du pool, certaines mesures de performance au niveau de la base de données, comme 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 monitorer un pool élastique dans son ensemble peut rendre inutile le monitoring de chaque base de données individuelle dans le pool.

Certaines données de monitoring telles que l’utilisation du processeur, 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 d’exécution des requêtes, les propriétés de base de données et les métadonnées de table et d’index sont disponibles seulement 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. Ainsi, vous bénéficiez d’une vue plus complète des performances de la base de données et du pool.

Monitorer des pools élastiques denses

Un pool élastique dense comporte de nombreuses bases de données, mais a une taille de calcul relativement petite. Cette configuration permet aux clients d’réaliser des économies substantielles en conservant au minimum l’allocation des ressources de calcul.

Il est important de noter que cette approche suppose que seul un petit nombre de bases de données du pool ont des requêtes en cours d’exécution en même temps.

Avertissement

Étant donné que les requêtes de surveillance doivent s’exécuter en continu dans chaque base de données surveillée, il n’est pas recommandé de surveiller plus de quelques bases de données individuelles dans un pool élastique dense.

Si vous ajoutez de nombreuses bases de données à partir d’un pool élastique dense en tant que cibles SQL, l’utilisation cumulative des ressources par les requêtes de surveillance exécutées dans chaque base de données peut avoir un impact sur les charges de travail d’application en raison de ressources insuffisantes dans le pool.

Pour la même raison, vous pouvez voir des lacunes dans les données collectées ou des intervalles plus importants que prévu entre les échantillons de données.

Pour surveiller un pool élastique dense, activez la surveillance au niveau du pool en ajoutant le pool élastique lui-même en tant que cible SQL. En réduisant le nombre total de requêtes de surveillance dans le pool élastique, vous évitez le risque d’impact sur les charges de travail d’application, tout en collectant des données au niveau du pool actionnable dans les jeux de données de pool élastique SQL.

Collecte de données dans des bases de données serverless

Si une base de données serverless a l’auto-pause désactivée, l’observateur de base de données la surveille comme une base de données provisionnée.

Si vous activez la pause automatique sur une base de données serverless, la collecte de données de l’observateur de base de données s’arrête lorsque la base de données s’interrompt. Les requêtes de surveillance de l’observateur de base de données n’empêchent pas une base de données serverless d’être suspendue si elle est autrement éligible pour être mise en pause.

Peu après la transition d'une base de données serverless vers un état suspendu, son état sur le tableau de bord récapitulatif de l’observateur passe à Pas de collecte. Les données précédemment collectées pour la base de données restent dans le magasin de données observateur et sont accessibles via des tableaux de bord et des requêtes.

La collecte de données reprend en quelques minutes après la transition de la base de données de l’état suspendu vers l’état en ligne .

Résidence des données

Les clients peuvent choisir de stocker les données de monitoring SQL collectées dans l’un des trois types de magasins 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 en savoir plus sur les fonctionnalités de réplication des données dans Azure Data Explorer, consultez Présentation de la continuité d’activité et de la reprise d’activité.

  • Une base de données sur 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 des données vers une autre région ou zone géographique n’est pas prise en charge.

  • Une base de données dans Real-Time Analytics dans Microsoft Fabric.

    Les clients ne peuvent pas choisir l’emplacement géographique de la base de données.

Pour pleinement contrôler la résidence des données pour les données de monitoring 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 monitoré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 besoins de résidence des données.

Jeux 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 collection et les noms de table dans le magasin de données.

Remarque

Dans la préversion, les jeux de données peuvent être ajoutés et supprimés. Les propriétés de jeu de données telles que le nom, la description, la fréquence de collection et les colonnes disponibles sont susceptibles de changer.

Nom du jeu de données Nom de la table Fréquence de collection (hh:mm:ss) Descriptif
Sessions actives sqldb_database_active_sessions 00:00:30 Chaque ligne représente une session exécutant une requête, bloquante ou comportant une transaction en cours.
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, comme 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 survenue pendant le traitement des modifications, lors de l’utilisation d’une fonctionnalité de traitement des modifications, comme 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 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, les propriétés et les statistiques opérationnelles d’index.
Utilisation de la mémoire sqldb_database_memory_utilization 00:00:30 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 des requêtes.
Événements de mémoire insuffisante sqldb_database_oom_events 00:01:00 Chaque ligne représente un événement de 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 un monitoring et une résolution des problèmes détaillés.
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 des requêtes.
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:30 Chaque ligne représente un réplica de base de données, y compris les métadonnées et statistiques de réplication. Inclut le réplica principal et les géoréplicas en cas de collection sur le réplica principal et les réplicas secondaires en cas de collection sur un réplica secondaire.
Utilisation des ressources sqldb_database_resource_utilization 00:00:15 Chaque ligne représente les statistiques de consommation du processeur, 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 des 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. Collecté lorsque le nombre de tables et de vues indexées dans la base de données est de 100 ou moins.
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 avec une étendue de base de données sont collectées.

Remarque

Pour les bases de données d’un pool élastique, les jeux de données de base de données SQL comportant 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 comporte que des attentes avec une étendue de 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 performances (courants) et Compteurs de performances (détaillés) comportent des mesures au niveau du pool et certaines mesures au niveau de la base de données, telles que Processeur, 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 comportent des colonnes courantes, comme décrit dans les tableaux suivants.

Nom de la colonne Descriptif
subscription_id ID d’abonnement Azure de la base de données SQL.
resource_group_name 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 collection peut être différente de l’heure de l’échantillon.
replica_type L’un des éléments suivants : Principal, Secondaire haute disponibilité, Redirecteur de géoréplication, Secondaire nommé.
logical_server_name Nom du serveur logique dans Azure SQL Database comportant la base de données ou le pool élastique monitoré(e).
database_name Nom de la base de données monitorée.
database_id ID de la base de données monitorée, unique au sein du serveur logique.
logical_database_id 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 et la modification de son objectif de service ne modifient pas cette valeur.
physical_database_id Identificateur unique pour la base de données physique actuelle correspondant à la base de données utilisateur. Le changement de l’objectif de service de la base de données entraîne la modification de cette valeur.
replica_id 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 comporte des échantillons observés avant la collection de la ligne par l’observateur de base de données. Sinon, l’heure d’observation et l’heure de collection sont identiques, et le jeu de données ne comporte 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 comporte la colonne end_time, qui correspond à l’heure d’observation de chaque ligne rapportant les statistiques de ressources agrégées pour un intervalle de 15 secondes. Cette heure est rapportée dans la colonne sample_time_utc. Lorsqu'un veilleur interroge cette DMV, le jeu de résultats peut contenir plusieurs lignes, chacune avec une valeur différente end_time. Toutes ces lignes ont la même valeur collection_time_utc.