FirebirdSQL logo

MON$TABLE_STATS

Статистика на уровне таблицы.

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

MON$STAT_ID

INTEGER

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

MON$STAT_GROUP

SMALLINT

Группа статистики:

0 — база данных (database);
1 — соединение с базой данных (connection);
2 — транзакция (transaction);
3 — оператор (statement);
4 — вызов (call).

MON$TABLE_NAME

CHAR(63)

Имя таблицы.

MON$RECORD_STAT_ID

INTEGER

Ссылка на MON$RECORD_STATS.

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

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

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