FirebirdSQL logo

MON$RECORD_STATS

Статистика на уровне записей.

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

MON$STAT_ID

INTEGER

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

MON$STAT_GROUP

SMALLINT

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

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

MON$RECORD_SEQ_READS

BIGINT

Количество последовательно считанных записей (read sequentially).

MON$RECORD_IDX_READS

BIGINT

Количество записей, прочитанных при помощи индекса (read via an index).

MON$RECORD_INSERTS

BIGINT

Количество добавленных записей (inserted records).

MON$RECORD_UPDATES

BIGINT

Количество изменённых записей (updated records).

MON$RECORD_DELETES

BIGINT

Количество удалённых записей (deleted records).

MON$RECORD_BACKOUTS

BIGINT

Количество удалений версий записей созданных при rollback (backed out records).

MON$RECORD_PURGES

BIGINT

Количество удалений старых версий записей (purged records).

MON$RECORD_EXPUNGES

BIGINT

Количество удалений всей цепочки версий записи, если самая последняя версия удалена, и не нужнадругим транзакциям (expunged records).

MON$RECORD_LOCKS

BIGINT

Количество записей прочитанных с использованием предложения WITH LOCK.

MON$RECORD_WAITS

BIGINT

Количество попыток обновления/модификации/блокировки записейпринадлежащих нескольким активным транзакциям. Транзакция находитсяв режиме WAIT.

MON$RECORD_CONFLICTS

BIGINT

Количество неудачных попыток обновления/модификации/блокировкизаписей принадлежащих нескольким активным транзакциям. В такихситуациях сообщается о конфликте обновления (UPDATE CONFLICT).

MON$BACKVERSION_READS

BIGINT

Количество прочитанных версий при поиске видимых версий записей.

MON$FRAGMENT_READS

BIGINT

Количество прочитанных фрагментов записей.

MON$RECORD_RPT_READS

BIGINT

Количество повторно прочитанных записей.

MON$RECORD_IMGC

BIGINT

Количество записей вычищенных промежуточной сборкой мусора.

Счётчики этой таблицы являются накопительными и накапливают информацию по каждой из групп статистики.

MON$STATEMENTS

Выполняемые SQL операторы.

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

MON$STATEMENT_ID

BIGINT

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

MON$ATTACHMENT_ID

BIGINT

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

MON$TRANSACTION_ID

BIGINT

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

MON$STATE

SMALLINT

Состояние оператора:

0 — бездействующий (idle);
1 — выполняемый (active);
2 — приостановленный (stalled).

MON$TIMESTAMP

TIMESTAMP

Дата и время старта оператора.

MON$SQL_TEXT

BLOB TEXT

Текст оператора на языке SQL.

MON$STAT_ID

INTEGER

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

MON$EXPLAINED_PLAN

BLOB TEXT

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

MON$STATEMENT_TIMEOUT

INTEGER

Тайм-аут SQL оператора уровня SQL оператора. Содержит значениетайм-аута, установленное на уровне соединения/оператора, вмиллисекундах. Если тайм-аут не установлен — 0.

MON$STATEMENT_TIMER

TIMESTAMP

Время истечения таймера SQL оператора. Содержит NULL, еслитайм-аут SQL оператора не установлен, или если таймер незапущен.

MON$COMPILED_STATEMENT_ID

BIGINT

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

Состояние оператора STALLED — это состояние “приостановлено”. Возможно для запроса, который начал своё выполнение, ещё не завершил его, но в данный момент не выполняется.Например, ждёт входных параметров или очередного фетча (fetch) от клиента.

Example 1. Отображение активных запросов за исключением тех, что выполняются в своём соединении
SELECT ATT.MON$USER, ATT.MON$REMOTE_ADDRESS, STMT.MON$SQL_TEXT, STMT.MON$TIMESTAMP
FROM MON$ATTACHMENTS ATT
  JOIN MON$STATEMENTS STMT ON ATT.MON$ATTACHMENT_ID = STMT.MON$ATTACHMENT_ID
WHERE ATT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION
  AND STMT.MON$STATE = 1

docnext count = 1

Использование MON$STATEMENTS для отмены запросов

Таблицы мониторинга доступны только для чтения.Однако в сервер встроен механизм для удаления (и только удаления) записей в таблице MON$STATEMENTS, что позволяет завершить активный запрос.

Note
  • Попытка отмены запросов не выполняется, если в соединении в настоящее время нет никаких выполняющихся операторов.

  • После отмены запроса вызов API-функций execute/fetch вернёт ошибку с кодом isc_cancelled.

  • Последующие запросы в данном соединении не запрещены.

  • Отмена запроса не происходит синхронно, оператор лишь помечает запрос на отмену, а сама отмена производится ядром асинхронно.

Example 1. Отмена всех активных запросов для заданного соединения
DELETE FROM MON$STATEMENTS
WHERE MON$ATTACHMENT_ID = 32