gstat: статистика базы данных Firebird

Запросы внезапно замедлились, планы стали неоптимальными, а файл базы растёт сам по себе? Разобраться помогает gstat — штатная утилита диагностики из поставки Firebird. Она смотрит в базу на уровне физических страниц и показывает то, чего не видно снаружи: цепочки версий записей, состояние индексов, занятое и свободное место.

Где лежит и как запускать

Утилита входит в стандартную поставку: Linux — /opt/firebird/bin/gstat, Windows — bin\gstat каталога установки. Требует указать файл базы (или алиас) и права администратора; работает при запущенном сервере.

gstat -u SYSDBA -p masterkey /var/db/production.fdb

Ключи

КлючЧто показывает
-aВсё сразу (all)
-dСтраницы данных: версии записей, цепочки, средняя длина
-iИндексы: глубина дерева, дубликаты, заполненность
-t TABLE1 TABLE2Только указанные таблицы (имя с учётом регистра)
-hЗаголовок базы: ODS, page size, статистика sweep, лимиты

Как читать вывод

Раздувание версиями (bloat). В секции данных смотрите количество версий записей и среднюю длину версии. Много старых версий = недособранный мусор: долгие транзакции или редкий sweep. База при этом весит в разы больше, чем «живых» данных.

Индексы. В секции индексов важны глубина (depth) и заполненность. Глубина 1–3 — норма; 4 и больше — повод перестроить индекс. Низкая заполненность страниц — тоже признак деградации.

Заголовок. ODS-версия, размер страницы, счётчики sweep’ов — первое, что стоит смотреть при «странном поведении» после смены версии сервера.

Грабли

Графические альтернативы

Если хочется не читать вывод, а смотреть графики деградации: IBAnalyst и мониторинг HQbird анализируют ту же статистику автоматически.

Что почитать дальше

Обсуждение