Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Шрифт:
Получение статистики
Существует много способов получить статистику Почти все универсальные инструменты, перечисленные в приложении "Инструменты администратора и разработчика InterBase", позволяют получить статистику базы данных с помощью нескольких нажатий мыши, однако часто случается так, что нужных инструментов не оказывается под рукой; поэтому мы рассмотрим, как получить результат, пользуясь только стандартными средствами. К таковым относится утилита командной строки gstat, которая входит в стандартную поставку InterBase 6.x и его клонов и позволяет получить вес вышеперечисленные виды статистики. Правда, есть важное ограничение - gstat должна выполняться на том же компьютере, где находится сервер InterBase, т. е. удаленное получение статистики при помощи gstat невозможно.
Формат
gstac [options] database
Здесь database - имя и путь к базе данных, из которой будет извлекаться статистика, a [optionsj - набор опций, которые определяют, какую информацию на- ю получить Опции утилиты gstat описаны в таблице 4.12:
Табл 4.12. Опции gstat
Опция | Описание опции |
– all | Опция выбирается по умолчанию - приводит к извлечению статистики по страницам данных и индексам |
– data | Извлекает статистику по страницам данных всех пользовательских таблиц в базе данных |
– header | Извлекает только статистику заголовочной страницы |
– index | Извлекает статистику по индексам в базе данных |
– log | Извлекает только статистику о страницах протокола |
– password] | Пароль пользователя, который запускает gstat для получения статистики |
– system | Извлекает статистику по системным таблицам и индексам |
– user name | Пользователь InterBase, который запускает gstat для получения статистики Только владелец базы данных или системный администратор SYSDBA может запускать gstat для получения статистики |
– z | Печатать версию gstat |
Помимо использования утилиты gstat, статистику всегда можно получить, применяя Sen ices API, который реализован во всех версиях InterBase 6.x и его клонов в варианте SuperServei, а также в клоне Yaffil Classic Server. Воспользоваться Services API можно как на низком уровне, так и посредством специализированных библиотек доступа к InterBase, таких, как FIBPlus и IBX. При использовании Services API нет ограничения на то, чтобы клиент, запрашивающий статистику, обязательно находился на компьютере-сервере.
В наших примерах мы будем использовать утилиту gstat, как наиболее надежный и стандартный способ получения статистики. Пример получения полной статистики базы данных выглядит следующим образом:
gstat -all -user SYSDBA -password masterkey
С:\Database\firstbase.gdb
При этом будет выведена как общая информация о базе данных, так и подробная информация о таблицах в базе данных. Надо сказать, что результатом выполнения этой команды даже для небольшой базы данных будет довольно обширный отчет. Давайте более подробно рассмотрим информацию, извлекаемую утилитой gstat.
Информация заголовочной страницы (Database header)
Заголовочная страница содержит важную информацию о базе данных в целом. Часть информации является статичной и записывается при создании базы данных, часть - меняется в зависимости от происходящих с базой данных изменений. Запуск утилиты gstat с ключом -all приводит к выводу всей статистической информации базы данных, при этом информация с заголовочной страницы выводится первой. Чтобы прекратить вывод статистики сразу после вывода этой информации, следует при запуске gstat указать только ключ -h. Пример информации с заголовочной страницы приводится ниже:
Database "C:\Database\EVP.GDB"
Database header page information:
Flags 0
Checksum 12345
Generation 1100521
Page size 8192
ODS version 8.2
Oldest transaction 1084640
Oldest active 1100476
Oldest snapshot 1100476
Next transaction 1100478
Bumped transaction 1
Sequence number 0
Next attachment ID 0
Implementation ID 8
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 1
Creation date Dec 19, 2001 21:30:59
Attributes force write
Variable header data:
Shared Cache file:
Sweep interval: 20000
*END*
В
Flags
Первой строкой в нем идет параметр Flags. Это набор флагов, определяющий важные особенности поведения базы данных. Возможные значения флагов, взятые из файла ods.h, описывающего структуру базы данных (On-disk structure - см. ниже главу "Структура базы данных InterBase"), приведены ниже в табл. 4.13.
Табл 4.13. Флаги файла базы данных
Значение флага (десятичное и шестнадцатеричное) | Расшифровка его значения |
0x1 1 | Файл является активным Shadow-файлом |
0x2 2 | Режим синхронного чтения-записи включен (forced write on) |
0x4 4 | Краткосрочное журналирование |
0x8 6 | Долгосрочное журналирование |
0x10 8 | Не вычислять контрольные суммы |
0x20 16 | Не резервировать место для версий файлов |
0x40 62 | Запретить применение совместно используемого кеш-файла |
0x80 128 | База данных остановлена |
0x100 256 | В базе данных используется SQL диалект 3 |
0x200 512 | База данных только для чтения. Если флаг не установлен, то допустимы как чтение, так и запись |
Флаги устанавливаются только с помощью специальных инструментов вроде gfix, изменять флаги с помощью других инструментов опасно - это может привести к порче базы данных.
Надо сказать, что при получении статистики показывается, что значение параметра Flags всегда равно нулю, вне зависимости от установленных флагов. Дело в том, что расшифровка части флагов производится ниже - в параметрах Database Dialect и Attributes.
Checksum
Второй строкой идет параметр checksum, т. е. контрольная сумма. Контрольная сумма имеется как на заголовочной странице, так и на любой другой странице базы данных. Однако в современных версиях InterBase (для ODS старше 9.x) она не используется и ее значение всегда равно 12345. Не очень полезный параметр.
Generation
Третья строка - это generation ("поколение" в переводе с английского). Это счетчик, который увеличивается на единицу всякий раз, когда заголовочная страница записывается на диск. Тоже мало полезный параметр.
Page size
Размер страницы базы данных, исчисляется в байтах. Параметр, который устанавливает основополагающее свойство базы данных - размер ее страницы. Все файлы одной базы данных состоят из страниц одинакового размера, который устанавливается при создании базы данных и при восстановлении базы данных из резервной копии. Впрочем, восстановление можно считать частным