firebird
мониторинг
Поиск…
замечания
С Firebird 2.1 и базами данных с ODS 11.1 (и выше) Firebird вводит возможность отслеживать активность на стороне сервера в конкретной базе данных.
Полный контроль базы данных доступен для SYSDBA и владельца базы данных. Обычные пользователи ограничены только информацией об их собственных вложениях - другие вложения невидимы для них.
Доступные таблицы мониторинга с Firebird 2.1 и ODS 11.1:
- MON $ DATABASE (подключенная база данных)
- MON $ ATTACHMENTS (подключенные вложения)
- MON $ TRANSACTIONS (начатые транзакции)
- ЗАКОНЫ MON $ (подготовленные заявления)
- MON $ CALL_STACK (стек вызовов активных запросов PSQL)
- MON $ IO_STATS (статистика ввода / вывода)
- MON $ RECORD_STATS (статистика уровня записи)
Ссылка: Замечания по выпуску Firebird 2.1
С Firebird 2.5 и базами данных с ODS 11.2 (и выше) Firebird добавляет следующие новые таблицы мониторинга
- MON $ MEMORY_USAGE (текущее использование памяти)
- MON $ CONTEXT_VARIABLES (известные переменные контекста)
Получить информацию о вложениях в подключенной базе данных
Информация о подключениях к базе данных
SELECT
a.mon$attachment_id as Attachment_ID,
a.mon$server_pid as Server_PID,
case a.mon$state
when 1 then 'active'
when 0 then 'idle'
end as State,
a.mon$attachment_name as Database_Name,
a.mon$user as User_Name,
a.mon$role as Role_Name,
a.mon$remote_protocol as Remote_Protocol,
a.mon$remote_address as Remote_Address,
a.mon$remote_pid as Remote_PID,
cs.rdb$character_set_name as Connection_Character_Set,
a.mon$timestamp as Established_At,
case a.mon$garbage_collection
when 1 then 'allowed'
when 0 then 'not allowed'
end as Garbage_Collection,
a.mon$remote_process as Remote_Process,
a.mon$stat_id as Statistics_ID
FROM
mon$attachments a, rdb$character_sets cs
where
(a.mon$character_set_id = cs.rdb$character_set_id)
Результаты:
Более конкретные примеры
Информация о подключенных клиентах.
SELECT
a.mon$remote_protocol as Remote_Protocol,
a.mon$remote_address as Remote_Address,
a.mon$remote_pid as Remote_PID,
a.mon$timestamp as Established_At,
a.mon$remote_process as Remote_Process
FROM
mon$attachments a
Получить PID всех процессов сервера, загружающих CPU на данный момент (интересно с классической серверной архитектурой)
SELECT
MON$SERVER_PID
FROM
MON$ATTACHMENTS
WHERE
MON$STATE = 1
Получить информацию о подключенных пользователях, рабочих станциях и клиентских приложениях
SELECT
mon$attachment_name as Database_Name,
mon$user as User_Name,
mon$role as Role_Name,
mon$remote_process as Client_Application,
mon$remote_address as Client_IP,
mon$remote_pid as Client_Application_PID
FROM
mon$attachments