Firebird offre la possibilité de surveiller le fonctionnement côté serveur d’une base de données particulière.Des tableaux de suivi sont utilisés à cet effet. Les tables de surveillance sont préfixées par le nom MON$
. Ces tables sont virtuelles dans le sens où aucune donnée n’y est écrite avant que l’utilisateur n’y accède.Elles ne sont remplies de données qu’au moment de la demande de l’utilisateur (y compris, donc, sur de telles tables il est inutile d’essayer de créer des triggers). En même temps, les descriptions de ces tables sont toujours présentes dans la base de données.
Le concept clé de la fonction de surveillance est un instantané de l’activité.Un instantané est l’état actuel d’une base de données contenant de nombreuses informations sur la base de données elle-même, les connexions actives, les utilisateurs, les transactions, les requêtes préparées et exécutées, etc.
Un instantané est créé lors de la première extraction d’une table de surveillance et est stocké jusqu’à la fin de la transaction en cours, de sorte que les requêtes portant sur plusieurs tables (par exemple, maître-détail) renverront toujours des données cohérentes.
En d’autres termes, les tables de surveillance se comportent comme des transactions SNAPSHOT TABLE STABILITY
(isc_tpb_consistency
), même si les requêtes sur ces tables sont effectuées dans une transaction avec un niveau d’isolation inférieur.
Pour mettre à jour l’instantané, la transaction en cours doit être interrompue et les tables de surveillance doivent être interrogées dans le nouveau contexte de transaction.
-
Les utilisateurs normaux sont limités aux informations concernant leurs propres connexions, les autres connexions leur sont invisibles.
Note
|
La collecte fréquente d’informations à l’aide de tableaux de surveillance dans un environnement fortement chargé peut avoir un impact négatif sur les performances du système. |
MON$ATTACHMENTS
-
Informations sur les connexions actuelles de la base de données.
MON$CALL_STACK
-
Accès aux piles par des requêtes actives de procédures stockées et de déclencheurs.
MON$CONTEXT_VARIABLES
-
Informations sur les variables de contexte de l’utilisateur.
MON$DATABASE
-
Détails de la base de données à laquelle la connexion a été établie.
MON$IO_STATS
-
Statistiques d’E/S.
MON$MEMORY_USAGE
-
Statistiques d’utilisation de la mémoire.
MON$RECORD_STATS
-
Statistiques au niveau des enregistrements.
MON$STATEMENTS
-
Les opérateurs se sont préparés à la mise en œuvre.
MON$TABLE_STATS
-
Statistiques au niveau de la table.
MON$TRANSACTIONS
-
Début des transactions.