Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :Azure SQL Database
Azure 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_namecolonne de la vue système sys.dm_exec_sessions estSQLExternalMonitoringoux_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.
Contenu associé
- Surveiller les charges de travail Azure SQL avec l’observateur de base de données (préversion)
- Démarrage rapide : Créer un observateur pour surveiller Azure SQL (préversion)
- Créer et configurer un surveillant (aperçu)
- Analyser les données de monitoring de l’observateur de base de données (préversion)
- Alertes de l’observateur de base de données (préversion)
- FAQ sur l’observateur de base de données