FirebirdSQL logo

MON$TRANSACTIONS

Описывает начатые транзакции

Table 1. Описание столбцов таблицы MON$TRANSACTIONS
Наименование столбца Тип данных Описание

MON$TRANSACTION_ID

BIGINT

Идентификатор (номер) транзакции.

MON$ATTACHMENT_ID

BIGINT

Идентификатор соединения.

MON$STATE

SMALLINT

Состояние транзакции:

0 — бездействующая (транзакция не имеет связанных с ней запросов);
1 — активная (есть хотя бы один запрос связанный с транзакцией).

Запрос связывается с транзакцией, когда начинает его выполнение.Эта связь разрывается, когда запрос начинает новое выполнение в другой транзакции, или, когда транзакция или запрос удаляется, но не тогда, когда запрос выполнен или из курсора выбраны все записи.

MON$TIMESTAMP

TIMESTAMP

Дата и время старта транзакции.

MON$TOP_TRANSACTION

INTEGER

Верхний предел используемый транзакцией чистильщика (sweeper) припродвижении глобального OIT. Все транзакции выше этого порогасчитаются активными. Обычно он эквивалентен MON$TRANSACTION_ID, ноиспользование COMMIT RETAINING или ROLLBACK RETAINING приводит ктому, что MON$TOP_TRANSACTION останется неизменным (“зависшим”) приувеличении идентификатора транзакции.

MON$OLDEST_TRANSACTION

INTEGER

Номер старейшей заинтересованной транзакции — OIT, OldestInteresting Transaction.

MON$OLDEST_ACTIVE

INTEGER

Номер старейшей активной транзакции — OAT, Oldest ActiveTransaction.

MON$ISOLATION_MODE

SMALLINT

Режим (уровень) изоляции:

0 — consistency (snapshot table stability);
1 — concurrency (snapshot);
2 — read committed record version;
3 — read committed no record version;
4 — read committed read consistency.

MON$LOCK_TIMEOUT

SMALLINT

Время ожидания:

-1 — бесконечное ожидание (wait);
0 — транзакция no wait;
другое число — время ожидания в секундах (lock timeout).

MON$READ_ONLY

SMALLINT

Признак, является ли транзакцией только для чтения, read only(значение 1) или для чтения и записи, read-write (0).

MON$AUTO_COMMIT

SMALLINT

Признак, используется ли автоматическое подтверждение транзакцииauto-commit (значение 1) или нет (0).

MON$AUTO_UNDO

SMALLINT

Признак, используется ли автоматическая отмена транзакцииauto-undo (значение 1) или нет (0). Если используется автоматическаяотмена транзакции, создаётся точка сохранения уровня транзакции.Существование точки сохранения позволяет отменять изменения, есливызывается ROLLBACK, после чего транзакция просто фиксируется. Еслиэтой точки сохранения не существует или она существует, ноколичество изменений очень велико, выполняется фактический ROLLBACK,и транзакция помечается в TIP как «мертвая».

MON$STAT_ID

INTEGER

Идентификатор статистики.

Example 1. Получение всех подключений, которые стартовали Read Write транзакции с уровнем изоляции выше 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

Обращения к стеку запросами хранимых процедур, хранимых функций и триггеров.

Table 1. Описание столбцов таблицы MON$CALL_STACK
Наименование столбца Тип данных Описание

MON$CALL_ID

BIGINT

Идентификатор обращения.

MON$STATEMENT_ID

BIGINT

Идентификатор верхнего уровня оператора SQL — оператора,инициировавшего цепочку обращений. По этому идентификатору можнонайти запись об активном операторе в таблице MON$STATEMENTS.

MON$CALLER_ID

BIGINT

Идентификатор обращающегося триггера, хранимой функции илихранимой процедуры.

MON$OBJECT_NAME

CHAR(63)

Имя объекта PSQL.

MON$OBJECT_TYPE

SMALLINT

Тип объекта PSQL:

2 — триггер;
5 — хранимая процедура;
15 — хранимая функция.

MON$TIMESTAMP

TIMESTAMP

Дата и время старта обращения.

MON$SOURCE_LINE

INTEGER

Номер исходной строки оператора SQL, выполняющегося в настоящиймомент.

MON$SOURCE_COLUMN

INTEGER

Номер исходного столбца оператора SQL, выполняющегося в настоящиймомент.

MON$STAT_ID

INTEGER

Идентификатор статистики.

MON$PACKAGE_NAME

CHAR(63)

Имя пакета для упакованных процедур/функций.

MON$COMPILED_STATEMENT_ID

BIGINT

Идентификатор скомпилированного запроса (ссылка на MON$COMPILED_STATEMENTS)

Note

В стек вызовов не попадёт информация о вызовах при выполнении оператора EXECUTE STATEMENT.

Example 1. Получение стека вызовов для всех подключений кроме своего
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