FirebirdSQL logo

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);

MON$CALL_STACK

Accéder aux piles en interrogeant les procédures stockées, les fonctions stockées et les déclencheurs.

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

MON$CALL_ID

BIGINT

Adresse ID.

MON$STATEMENT_ID

BIGINT

L’identifiant de haut niveau de l’instruction SQL — l’instruction qui a initié la chaîne d’appels. Cet identifiant peut être utilisé pour trouver l’enregistrement du relevé actif dans la table MON$STATEMENTS.

MON$CALLER_ID

BIGINT

L’identifiant du déclencheur, de la fonction stockée ou de la procédure stockée de référence.

MON$OBJECT_NAME

CHAR(63)

Le nom de l’objet PSQL.

MON$OBJECT_TYPE

SMALLINT

Type d’objet PSQL :

  • 2 — trigger ;

  • 5 — procédure stockée ;

  • 15 — une fonction stockée.

MON$TIMESTAMP

TIMESTAMP

Date et heure du début de l’appel.

MON$SOURCE_LINE

INTEGER

Le numéro de ligne source de l’instruction SQL en cours d’exécution.

MON$SOURCE_COLUMN

INTEGER

Le numéro de la colonne source de l’instruction SQL en cours d’exécution.

MON$STAT_ID

INTEGER

Identificateur statistique.

MON$PACKAGE_NAME

CHAR(63)

Nom du paquet pour les procédures/fonctions paquagées.

MON$COMPILED_STATEMENT_ID

BIGINT

Identifiant de la requête compilée (référence à MON$COMPILED_STATEMENTS)

Note

La pile d’appel n’obtiendra pas les informations d’appel lorsque l’opérateur EXECUTE STATEMENT est exécuté.

Example 1. Obtenez une pile d’appels pour toutes les connexions, sauf la vôtre.
WITH RECURSIVE
  HEAD AS (
    SELECT
      CALL.MON$STATEMENT_ID, CALL.MON$CALL_ID,
      CALL.MON$OBJECT_NAME, CALL.MON$OBJECT_TYPE
    FROM MON$CALL_STACK CALL
    WHERE CALL.MON$CALLER_ID IS NULL
    UNION ALL
    SELECT
      CALL.MON$STATEMENT_ID, CALL.MON$CALL_ID,
      CALL.MON$OBJECT_NAME, CALL.MON$OBJECT_TYPE
    FROM MON$CALL_STACK CALL
      JOIN HEAD ON CALL.MON$CALLER_ID = HEAD.MON$CALL_ID
  )
SELECT MON$ATTACHMENT_ID, MON$OBJECT_NAME, MON$OBJECT_TYPE
FROM HEAD
  JOIN MON$STATEMENTS STMT ON STMT.MON$STATEMENT_ID = HEAD.MON$STATEMENT_ID
WHERE STMT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION