FirebirdSQL logo

MON$TABLE_STATS

Les statistiques sont au niveau des tables.

Table 1. Description des colonnes de la table MON$TABLE_STATS
Nom de la colonne Type de données Description

MON$STAT_ID

INTEGER

Id.

MON$STAT_GROUP

SMALLINT

Groupe de statistiques :

  • 0 — base de données (database);

  • 1 — connexion à la base de données (connection);

  • 2 — transaction (transaction);

  • 3 — opérateur (statement);

  • 4 — Appel (call).

MON$TABLE_NAME

CHAR(63)

Nom de la table.

MON$RECORD_STAT_ID

INTEGER

Référence à MON$RECORD_STATS.

Example 1. Obtenir des statistiques au niveau des enregistrements pour chaque table pour sa connexion
SELECT
    t.mon$table_name,
    r.mon$record_inserts,
    r.mon$record_updates,
    r.mon$record_deletes,
    r.mon$record_backouts,
    r.mon$record_purges,
    r.mon$record_expunges,
    ------------------------
    r.mon$record_seq_reads,
    r.mon$record_idx_reads,
    r.mon$record_rpt_reads,
    r.mon$backversion_reads,
    r.mon$fragment_reads,
    ------------------------
    r.mon$record_locks,
    r.mon$record_waits,
    r.mon$record_conflicts,
    ------------------------
    a.mon$stat_id
FROM
    mon$record_stats r
    JOIN mon$table_stats t ON r.mon$stat_id = t.mon$record_stat_id
    JOIN mon$attachments a ON t.mon$stat_id = a.mon$stat_id
WHERE
      a.mon$attachment_id = CURRENT_CONNECTION

MON$TRANSACTIONS

Décrit les transactions qui ont été lancées

Table 1. Description des colonnes de la table MON$TRANSACTIONS
Nom de la colonne Type de données Description

MON$TRANSACTION_ID

BIGINT

L’identifiant (numéro) de la transaction.

MON$ATTACHMENT_ID

BIGINT

L’Id de l’attachement

MON$STATE

SMALLINT

Statut de la transaction :

  • 0 — inactif (la transaction n’est pas associée à des requêtes) ;

  • 1 — active (il y a au moins une requête associée à la transaction).

Ce lien est rompu lorsque la requête commence une nouvelle exécution dans une autre transaction, ou lorsque la transaction ou la requête est supprimée, mais pas lorsque la requête est exécutée ou que tous les enregistrements ont été sélectionnés dans le curseur.

MON$TIMESTAMP

TIMESTAMP

La date et l’heure auxquelles la transaction a commencé.

MON$TOP_TRANSACTION

INTEGER

La limite supérieure utilisée par une transaction de balayage lors de l’avancement d’un OIT global. Toutes les transactions supérieures à ce seuil sont considérées comme actives. Normalement, il est équivalent à MON$TRANSACTION_ID, mais en utilisant COMMIT RETAINING ou ROLLBACK RETAINING, MON$TOP_TRANSACTION restera inchangé ("hanging") lorsque l’ID de la transaction sera augmenté.

MON$OLDEST_TRANSACTION

INTEGER

Le numéro de la transaction intéressée la plus ancienne est OIT, Oldest Interesting Transaction.

MON$OLDEST_ACTIVE

INTEGER

Le numéro de la transaction active la plus ancienne est OAT, Oldest Active Transaction.

MON$ISOLATION_MODE

SMALLINT

Mode d’isolation (niveau) :

  • 0 — cohérent (snapshot table stability);

  • 1 — Concurrent (snapshot);

  • 2 — read committed record version;

  • 3 — read committed no record version;

  • 4 — read committed read consistency.

MON$LOCK_TIMEOUT

SMALLINT

Temps d’attente :

  • -1 — attente indéterminé (wait);

  • 0 — transaction no wait;un autre nombre est le temps d’attente en secondes (lock timeout).

MON$READ_ONLY

SMALLINT

Un flag indiquant si la transaction est en lecture seule (valeur 1) ou en lecture-écriture (0).

MON$AUTO_COMMIT

SMALLINT

Indique si auto-commit est utilisé (valeur 1) ou non (0).

MON$AUTO_UNDO

SMALLINT

Une indication pour savoir si l’auto-undo est utilisé (valeur 1) ou non (0). Si auto-undo est utilisé, un point de sauvegarde au niveau de la transaction est créé. L’existence d’un point de sauvegarde permet d’annuler les changements si ROLLBACK est appelé, après quoi la transaction est simplement validée. Si ce point de sauvegarde n’existe pas ou s’il existe, mais que le nombre de changements est très élevé, le ROLLBACK réel est exécuté et la transaction est marquée comme "morte" dans TIP.

MON$STAT_ID

INTEGER

Id.

Example 1. Récupérer toutes les connexions qui ont démarré des transactions de lecture-écriture avec un niveau d’isolation supérieur à celui de l’utilisateur. Read Committed.
SELECT
    DISTINCT a.*
FROM
    mon$attachments a
    JOIN mon$transactions t ON a.mon$attachment_id = t.mon$attachment_id
WHERE
  NOT(t.mon$read_only = 1 AND t.mon$isolation_mode >= 2);