InterBase - статьи

Анализ статистики базы данных InterBase/FireBird


Волох Д.А.

Компания НеРуСофт

Статистика базы данных InterBase/FireBird, полученная через gstat или Services API, предоставляет большое количество статистических данных, которые могут быть использованы для анализа работы сервера и самой базы данных. Приложения, работающие с базой данных, могут корректно работать с транзакциями и самими данными, то есть не создают длительные активные транзакции, не запускают длительные snapshot транзакции. Все это верно для небольшого количества одновременно работающих пользователей, но как только количество пользователей возрастет на порядок и следовательно увеличиться количество операций по вставке, редактированию и удалению данных, могут возникнуть проблемы по сборке, так называемого, мусора. Проведенная и проанализированная статистика может помочь в процессе сборки мусора.

С помощью утилиты gstat с соответствующими ключами или Services API можно получить следующие виды статистики:

  • Статистика заголовочной страницы - это информация о глобальных свойствах всей базы данных, хранящаяся на заголовочной страницы каждой базы данных ( -header );
  • Статистика страниц данных – информация о таблицах содержащихся в базе данных ( -data);
  • Статистика индексов – информация об индексах в базе данных (-index);
  • Статистика системных таблиц (-system).

Пример использования gstat:

gstat –header –user SYSDBA –password masterkey c:work.gdb
gstat –all –user SYSDBA –password masterkey c:work.gdb получаем полную статистическую информацию базы данных

Описание основных разделов статистики базы данных

Для примера будем рассматривать конкретную базу данных, которая состоит из 12 таблиц, большая часть работы производится с одной таблицей, которая ссылается на 4 справочника и ежедневный прирост записей составляет порядка 1000 записей. Общее количество записей на момент написания статьи составляет 192285 записей. Размер файла базы данных составляет 302 мегабайта.
Запустив утилиты gstat (с ключом –header)или использовав компонент FIBStatisticalServices можно получить статистические данные о нашей базе данных. Часть информации является статичной, часть – меняется в зависимости от происходящих в базе данных изменений.

Пример заголовочной информации:

Database header page information:


Следует отметить, что в нашем примере выводится вся статистическая информация, но с помощью свойства Options можно выбирать какую область данных нужно вывести: fibStatistical.Options := [DataPages]; //соответствует ключу –data ffibStatistical.Options := [HeaderPages]; //соответствует ключу –header



Процесс получения статистики проходит определенное время поэтому, чтобы не смущать пользователя простоем программы сменим курсор:

Screen.Cursor := crSQLWait;

Далее нам нужно отображать информацию в поле Мемо: while not (fibStatistical.Eof) do mDBInfo.Lines.Add(fibStatistical.GetNextLine);

По завершению выполняем следующие действия:

Screen.Cursor := crDefault; // Возвращаем курсор в стандартный вид

fibStatistical.Active := False; // Деактивируем процесс

В итоге у нас должно получиться следующее:




Содержание раздела