СУБД Firebird предоставляет возможность отслеживать работу с конкретной базой данных, выполняемую на стороне сервера.Для этих целей используются таблицы мониторинга. Таблицы мониторинга имеют префикс имени MON$
. Эти таблицы являются виртуальными в том смысле, что до обращения к ним со стороны пользователя, никаких данных в них не записано.Они заполняются данными только в момент запроса пользователя (в том числе, поэтому на такие таблицы бесполезно пытаться создавать триггеры). При этом описания этих таблиц в базе данных присутствуют постоянно.
Ключевым понятием функции мониторинга является снимок активности.Снимок представляет собой текущее состояние базы данных, содержащее множество информации о самой базе данных, активных соединениях, пользователях, транзакциях, подготовленных и выполняемых запросах и т.д.
Снимок создаётся при первой выборке из любой таблицы мониторинга и сохраняется до конца текущей транзакции, чтобы запросы к множеству таблиц (например, главная-подчинённая) всегда возвращал непротиворечивые данные.
Другими словами таблицы мониторинга ведут себя подобно SNAPSHOT TABLE STABILITY
(isc_tpb_consistency
) транзакции, даже если запросы к ним выполняются в транзакции с меньшим уровнем изолированности.
Для обновления снимка, текущая транзакция должна быть завершена и таблицы мониторинга должны быть запрошены в новом контексте транзакции.
-
Обычные пользователи ограничены информацией о собственных соединениях, другие соединения невидимы для них.
Note
|
Частый сбор информации с помощью таблиц мониторинга в сильно нагруженной среде может негативно отразиться на производительности системы. |
MON$ATTACHMENTS
-
Сведения о текущих соединениях с базой данных.
MON$CALL_STACK
-
Обращения к стеку активными запросами хранимых процедур итриггеров.
MON$COMPILED_STATEMENTS
-
Подготовленные к выполнению запросы и PSQL модули.
MON$CONTEXT_VARIABLES
-
Сведения о пользовательских контекстных переменных.
MON$DATABASE
-
Сведения о базе данных, с которой выполнено соединение.
MON$IO_STATS
-
Статистика по вводу-выводу.
MON$MEMORY_USAGE
-
Статистика использования памяти.
MON$RECORD_STATS
-
Статистика на уровне записей.
MON$STATEMENTS
-
Выполняемые запросы.
MON$TABLE_STATS
-
Статистика на уровне таблиц.
MON$TRANSACTIONS
-
Запущенные транзакции.