Мониторинг состояния сервера
Любители исследовать исходный код InterBase б часто говорят, что в нем скрыта масса интереснейших идей, которые были не доведены до конца по каким-либо причинам. Одной из таких идей, извлеченных и реализованных в InterBase 7, является мониторинг внутреннего состояния сервера.
В InterBase предыдущих версий сервер производил постоянный мониторинг своего состояния — отслеживал выполняющиеся запросы, подключенных пользователей и т. д. Но все эти данные были для внутреннего использования - пользователи не могли получить к ним доступ. Теперь ситуация изменилась - в InteiBase 7 появился удобный интерфейс для доступа к данным о мгновенном состоянии сервера.
InterBase 7 предоставляет механизм "временных системных таблиц" для доступа к данным о своем состоянии. Не надо путать эти временные таблицы с временными таблицами в других СУБД, которые используются для оптимизации выполнения SQL-запросов.
В данном случае временные системные таблицы лишь представление мгновенного снимка состояния сервера и баз данных. Чтобы избавить разработчиков приложений баз данных от необходимости использовать специальные вызовы API для получения (и даже изменения') информации о состоянии сервера, в семерке создан SQL-интерфейс для этих целей. Не правда ли, очень удобно - формируете стандартными средствами SQL-запрос и получаете нужную статистику в виде привычного набора данных.
Выполняя запросы к временным таблицам, можно получить свежие (на момент выполнения запроса) данные о том, какие запросы выполняет конкретный подключенный пользователь, какие таблицы использует Чтобы обновить полученные данные, надо подтвердить транзакцию, в рамках которой выполнялся запрос к временным системным таблицам, и выполнить запрос снова.
Можно также узнать, какие запросы в данный момент выполняются на сервере и какой из этих запросов самый длительный. Помимо этого, существует еще множество видов информации, которую можно извлечь из системных таблиц.
Вот список временных системных таблиц для мониторинга в InterBase 7 с краткими описаниями, взятый с сайта www.ibase.ru:
Табл 2. Системные таблицы для мониторинга в InterBase 7
Доступные системные временные таблицы |
|
Название таблицы |
Что содержит |
TMPSATTACHMENTS |
По записи на каждое соединение к базе данных |
TMP$DATABASE |
По записи на каждую базу данных, к которой вы подсоединились |
TMP$POOL_BLOCKS |
По записи на каждый блок памяти в каждом пуле |
TMP$POOLS |
По записи на каждый пул памяти |
TMP$PROCEDURES |
По записи на каждую выполненную в данном соединении процедуру |
TMP$RELATIONS |
По записи на каждую таблицу, к которой было обращение в данном соединении |
TMPSSTATEMENTS |
По записи на каждый выполняемый в данный момент запрос, для всех соединений |
TMP$TRANSACTIONS |
По записи на каждую активную (или в состоянии limbo) транзакцию |