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.
L'accès complet à toutes les informations fournies par les tables de surveillance est disponible pour SYSDBA et le propriétaire de la base de données ;
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 ouvre.
MON$TABLE_STATS
Statistiques au niveau de la table.
MON$TRANSACTIONS
Début des transactions.