FirebirdSQL logo

MON$DATABASE

Сведения о базе данных, с которой выполнено соединение.

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

MON$DATABASE_NAME

VARCHAR(255)

Полный путь и имя первичного файла базы данных или псевдоним базыданных.

MON$PAGE_SIZE

SMALLINT

Размер страницы файлов базы данных в байтах.

MON$ODS_MAJOR

SMALLINT

Старшая версия ODS.

MON$ODS_MINOR

SMALLINT

Младшая версия ODS.

MON$OLDEST_TRANSACTION

BIGINT

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

MON$OLDEST_ACTIVE

BIGINT

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

MON$OLDEST_SNAPSHOT

BIGINT

Номер транзакции, которая была активной на момент стартатранзакции OAT, транзакция OST — Oldest Snapshot Transaction.

MON$NEXT_TRANSACTION

BIGINT

Номер следующей транзакции.

MON$PAGE_BUFFERS

INTEGER

Количество страниц, выделенных в оперативной памяти для кэша.

MON$SQL_DIALECT

SMALLINT

SQL диалект базы данных: 1 или 3.

MON$SHUTDOWN_MODE

SMALLINT

Текущее состояние останова (shutdown) базы данных:

0 — база данных активна (online);
1 — останов для нескольких пользователей (multi-user shutdown);
2 — останов для одного пользователя (single-user shutdown);
3 — полный останов (full shutdown).

MON$SWEEP_INTERVAL

INTEGER

Интервал чистки (sweep interval).

MON$READ_ONLY

SMALLINT

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

MON$FORCED_WRITES

SMALLINT

Указывает, установлен ли для базы режим синхронного вывода(forced writes, значение 1) или режим асинхронного вывода (значение 0).

MON$RESERVE_SPACE

SMALLINT

Флаг, указывающий на резервирование пространства.

MON$CREATION_DATE

TIMESTAMP

Дата и время создания базы данных.

MON$PAGES

BIGINT

Количество страниц, выделенных для базы данных на внешнемустройстве.

MON$STAT_ID

INTEGER

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

MON$BACKUP_STATE

SMALLINT

Текущее физическое состояние backup:

0 — нормальное;
1 — заблокированное;
2 — слияние (объединение).

MON$CRYPT_STATE

SMALLINT

Текущее состояние шифрования:

0 — не зашифрована;
1 — зашифрована;
2 — в процессе дешифрования;
3 — в процессе шифрования.

MON$CRYPT_PAGE

BIGINT

Количество зашифрованных/дешифрованных страниц в процессешифрования/дешифрования; ноль если этот процесс закончился или неначинался.

MON$OWNER

CHAR(63)

Владелец базы данных.

MON$SEC_DATABASE

CHAR(7)

Отображает, какой тип базы данных безопасности используется:

Default — база данных безопасности по умолчанию, т.е. security4.fdb;
Self — в качестве базы данных безопасности используется текущая база данных;
Other — в качестве базы данных безопасности используется другая база данных (не сама и не security4.fdb).

MON$GUID

CHAR(38)

GUID базы данных.

MON$FILE_ID

VARCHAR(255)

Уникальный идентификатор базы данных на уровне файловойсистемы.

MON$NEXT_ATTACHMENT

BIGINT

Номер (идентификатор) следующего соединения.

MON$NEXT_STATEMENT

BIGINT

Номер (идентификатор) следующего SQL запроса.

MON$REPLICA_MODE

SMALLINT

Режим репликации:

0 - NONE — база данных является первичной;
1 - READ-ONLY — реплика в режиме только чтение;
2 - READ-WRITE — реплика в режиме чтение и запись.

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) страниц базы данных.

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

docnext count = 4

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

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