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

MON$COMPILED_STATEMENTS

Скомпилированные SQL операторы.

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

MON$COMPILED_STATEMENT_ID

BIGINT

Идентификатор скомпилированного запроса.

MON$SQL_TEXT

BLOB TEXT

Текст оператора на языке SQL. Внутри PSQL объектов текст SQL операторов не отображается.

MON$EXPLAINED_PLAN

BLOB TEXT

План оператора в explain форме.

MON$OBJECT_NAME

CHAR(63)

Имя PSQL объекта, в котором был компилирован SQL оператор.

MON$OBJECT_TYPE

SMALLINT

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

MON$PACKAGE_NAME

CHAR(63)

Имя PSQL пакета.

MON$STAT_ID

INTEGER

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

MON$CONTEXT_VARIABLES

Сведения о пользовательских контекстных переменных.

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

MON$ATTACHMENT_ID

BIGINT

Идентификатор соединения. Содержит корректное значение только дляконтекстных переменных уровня соединения, для переменных уровнятранзакции устанавливается в NULL.

MON$TRANSACTION_ID

BIGINT

Идентификатор транзакции. Содержит корректное значение только дляконтекстных переменных уровня транзакции, для переменных уровнясоединения устанавливается в NULL.

MON$VARIABLE_NAME

VARCHAR(80)

Имя контекстной переменной.

MON$VARIABLE_VALUE

VARCHAR(32765)

Значение контекстной переменной.

Example 1. Получение всех сессионных контекстных переменных для текущего подключения
SELECT VAR.MON$VARIABLE_NAME, VAR.MON$VARIABLE_VALUE
FROM MON$CONTEXT_VARIABLES VAR
WHERE VAR.MON$ATTACHMENT_ID = CURRENT_CONNECTION