* Если возможно, удаляйте все строки за один раз, а не выполняйте их удаление одну за другой в случайном порядке. Удалите ограничение внешнего ключа, удалите строки и подтвердите транзакцию. Заново создайте ограничение. Поскольку это не длинная транзакция, задерживающая сборку мусора, новый индекс будет полностью пустым.
* Если удаления должны быть последовательными, выберите время, чтобы получить исключительный доступ и использовать ALTER INDEX для пересоздания индекса. Это будет более быстро и предсказуемо, чем инкрементная сборка мусора в огромной цепочке дубликатов.
Другие переключатели gstat
Статистика утилиты gstat может предоставить полезную информацию о других действиях с базой данных.
Переключатель -header
Эта строка
gstat -header база-данных
отображает суммарную информацию заголовочной страницы базы данных. На рис. 18.5 показан пример.
Первая строка отображает имя и размещение первичного файла базы данных. Следующие строки содержат информацию из заголовочной страницы базы данных. В табл. 18.3 описывается этот вывод.
Рис. 18.5. Пример вывода заголовочной страницы утилитой gstat
Таблица 18.3. Вывод gstat -h[eader]
Элемент
|
Описание
|
Flags
|
Флаги
|
Checksum
|
Контрольная сумма заголовочной страницы. В прототипе (InterBase) это было уникальное значение, вычислявшееся по всем данным заголовочной страницы. В Firebird это всегда 12 345. Когда заголовочная страница сохраняется на диске, а затем считывается, контрольная сумма найденной страницы сравнивается с 12 345, и если они не соответствуют, то вызывается ошибка контрольной суммы. Это перехватывает некоторые виды физического разрушения
|
Generation
|
Каждый раз увеличивается на единицу, когда заголовочная страница записывается на диск
|
Page size
|
Текущий размер страницы базы данных в байтах
|
ODS version
|
Версия структуры на диске (ODS) для базы данных. Это будет 10 для версии 1,0.x и 10.1 для версии 1.5
|
Oldest transaction
|
Идентификатор самой старой "заинтересованной" транзакции. Информацию об этом см. в главе 25
|
Oldest active
|
Идентификатор самой старой активной транзакции
|
Oldest snapshot
|
Идентификатор самой старой транзакции, которая не является в настоящий момент подходящей для сборки мусора (т. е. эта и другие, более поздние транзакции не являются для этого подходящими)
|
Next transaction
|
Идентификатор, который Firebird назначит следующей транзакции. Разница между самой старой активной транзакцией и следующей транзакцией определяет, когда начнется чистка базы данных [61] Это неверно, и автор подтвердил ошибку. Next transaction не имеет никакой связи со sweep. Автоматический sweep стартует, когда разница между Oldest Snapshot и Oldest Interesting больше Sweep interval (в Firebird 2.0 за верхнюю границу берется не Oldest Snapshot, a Oldest Active). -Прим. науч. ред. . Значение по умолчанию 20 000. См. разд. "Гигиена базы данных" главы 15
|
Bumped transaction
|
Теперь устарело
|
Sequence number
|
Последовательный номер заголовочной страницы. Всегда ноль
|
Next connection ID
|
Номер идентификатора следующего соединения с базой данных
|
Implementation ID
|
Архитектура аппаратуры, на которой была создана база данных
|
Shadow count
|
Количество наборов оперативных копий для базы данных
|
Number of cache buffers
|
Размер в страницах кэша базы данных. Ноль означает, что база данных использует значение по умолчанию сервера
(DefaultDbCachePages в firebird.config, default_cache_pages в ibconfig/isc_config для версии 1.0.x)
|
Next header page
|
Номер страницы следующей заголовочной страницы - хотя, похоже, это не поддерживается
|
Database dialect
|
Диалект SQL базы данных
|
Creation date
|
Дата создания базы данных или последнего восстановления из резервной копии
|
Attributes
|
force write означает режим принудительной записи.
no reserve указывает, что на страницах не резервируется место для старых версий данных. Это позволяет более плотно упаковывать данные на каждой странице, в силу чего база данных занимает меньше дискового пространства. Это идеал для баз данных только для чтения.
shutdown означает, что работа с базой данных запрещена для всех пользователей, кроме SYSDBA
|
Variable header data
|
Читать дальше