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.

Sécurité :
  • 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.

Tables de suivi
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.