FirebirdSQL logo

MON$IO_STATS

Статистика по вводу-выводу.

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

MON$STAT_ID

INTEGER

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

MON$STAT_GROUP

SMALLINT

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

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

MON$PAGE_READS

BIGINT

Количество прочитанных (read) страниц базы данных.

MON$PAGE_WRITES

BIGINT

Количество записанных (write) страниц базы данных.

MON$PAGE_FETCHES

BIGINT

Количество загруженных в память (fetch) страниц базы данных.

MON$PAGE_MARKS

BIGINT

Количество отмеченных (mark) страниц базы данных.

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

MON$MEMORY_USAGE

Статистика использования памяти.

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

MON$STAT_ID

INTEGER

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

MON$STAT_GROUP

SMALLINT

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

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

MON$MEMORY_USED

BIGINT

Количество используемой памяти, байт.Информация о высокоуровневом распределении памяти, выполненной сервером из пулов.Может быть полезна для отслеживания утечек памяти и чрезмерного потребления памяти в соединениях, процедурах и т.д.

MON$MEMORY_ALLOCATED

BIGINT

Количество памяти, выделенной ОС, байт.Информация о низкоуровневом распределении памяти, выполненном менеджером памяти Firebird — объем памяти, выделенный операционной системой, что позволяет контролировать физическое потребление памяти.Обратите внимание, не все записи этого столбца имеют ненулевые значения.Малые выделения памяти здесь не фиксируются, а вместо этого добавляются к пулу памяти базы данных.Только MON$DATABASE (MON$STAT_GROUP = 0) и связанные с выделением памяти объекты имеют ненулевое значение.

MON$MAX_MEMORY_USED

BIGINT

Максимальное количество байт, используемое даннымобъектом.

MON$MAX_MEMORY_ALLOCATED

BIGINT

Максимальное количество байт, выделенное ОС данномуобъекту.

Note

Счётчики, связанные с записями уровня базы данных MON$DATABASE (MON$STAT_GROUP = 0), отображают выделение памяти для всех соединений.В архитектурах Classic и SuperClassic нулевые значения счётчиков обозначают, что в этих архитектурах нет общего кэша.

Example 1. Получение 10 запросов потребляющих наибольшее количество памяти
SELECT STMT.MON$ATTACHMENT_ID, STMT.MON$SQL_TEXT, MEM.MON$MEMORY_USED
FROM MON$MEMORY_USAGE MEM
   NATURAL JOIN MON$STATEMENTS STMT
ORDER BY MEM.MON$MEMORY_USED DESC
FETCH FIRST 10 ROWS ONLY

docnext count = 3

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

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

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

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

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

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

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

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