Чтение онлайн

на главную - закладки

Жанры

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

Однако, если проектирование базы данных, безусловно, требует ограничений внешних ключей для временных таблиц со столбцами низкой селективности, существуют рекомендованные способы уменьшения накладных расходов и снижения ухудшения состояния индексных страниц, являющихся следствием удаления и дальнейшего наполнения данными таблицы. Отслеживайте уровень заполнения проблемных индексов и принимайте меры, когда он упадет ниже 40%. Выбор действий зависит от ваших требований.

* Если возможно, удаляйте все строки за один раз, а не выполняйте их удаление одну за другой в случайном порядке. Удалите ограничение внешнего ключа, удалите строки и подтвердите транзакцию. Заново создайте ограничение. Поскольку это не длинная транзакция, задерживающая сборку мусора, новый индекс будет полностью пустым.

* Если удаления должны быть последовательными, выберите время, чтобы получить исключительный доступ и использовать 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] . Значение по умолчанию 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

Интервал очистки (sweep interval). Информация о вторичных файлах (если присутствуют)

61

Это неверно, и автор подтвердил ошибку. Next transaction не имеет никакой связи со sweep. Автоматический sweep стартует, когда разница между Oldest Snapshot

и Oldest Interesting больше Sweep interval (в Firebird 2.0 за верхнюю границу берется не Oldest Snapshot, a Oldest Active).
– Прим. науч. ред.

Переключатель -data

Следующая строка

gstat -data база-данных

просматривает в базе данных таблицу за таблицей, отображая итоговую информацию о страницах данных. Для включения в отчет системных таблиц (RDB$XXX) добавьте переключатель -system. На рис. 18.6 показан пример вывода.

Рис. 18.6. Пример итогового вывода по страницам данных в gstat

Вывод в командной строке аналогичен.

COUNTRY (31)

Primary pointer page: 190, Index root page: 19

Data pages: 1, data page slots: 1, average fill: 26%

Fill distribution:

0 - 19% = 0

20 - 39% = 1

40 - 59% = 0

60 - 79% = 0

80 - 99% = 0

Для каждой таблицы базы данных отображаются числа, показанные в табл. 18.4.

Глава 18. Индексы

375

Таблица 18.4. Вывод gstat -d[ata]

Элемент

Описание

Primary pointer page

Номер первой страницы косвенных указателей на страницы, хранящие данные таблицы

Index root page

Номер страницы, которая является первой страницей указателей на индексы таблицы

Data pages

Общее количество страниц, в которых хранятся данные таблицы. Этот счетчик включает страницы, хранящие неподтвержденные версии записей и мусор, потому что gstat не может их отличить друг от друга

Data page slots

Количество указателей на страницы базы данных, содержащихся на страницах указателей. Должно равняться числу страниц данных

Average fill

Это гистограмма из пяти 20-процентных "полос", каждая из которых показывает количество страниц данных, чье среднее заполнение попадает в этот диапазон. Процент заполнения определяется соотношением пространства каждой страницы, содержащей данные. В нашем примере среднее заполнение низкое, потому что база данных employee.gdb содержит небольшие структуры записей, и их не так много. Сумма этих чисел дает общее количество страниц, содержащих данные

Fill distribution

Обобщающая гистограмма распределения использования памяти для всех страниц, выделенных в таблице. В нашем примере пока используется только одна страница, и она имеет менее 40% заполнения

Ограничение вывода для gstat -data

Если вам не нужен отчет по данным для всех таблиц, вы можете использовать переключатель -t для задания списка таблиц, интересующих вас.

Синтаксис:

gstat -data база-данных -t имя-таблицы1 [имя-таблицы2 [ имя-таблицы3 ..]]

! ! !

ПРИМЕЧАНИЕ. Имена таблиц должны быть набраны в верхнем регистре. К сожалению, gstat не поддерживает переключатель -t[able-list] для баз данных, которые используют чувствительные к регистру идентификаторы таблиц, заключенные в кавычки.

. ! .

Переключатель -r[ecords]

Следующая строка

gstat -r база-данных

отображает статистику по размерам и версиям записей.

* Для строк: среднее значение длины строк в байтах и общее количество строк в таблице.

* Для старых версий: среднее значение длины версий в байтах, общее количество версий в таблице и максимальная цепочка версий для записи.

Общее количество строк в таблице может включать активные и зависшие транзакции. Длина записей и версий применима к фактическим данным пользователя - длина не использует счетчик в заголовке, который предшествует каждой версии записи.

Пример

Три таблицы (CAULDRON, CAULDRON1 и CAULDRON2) имеют одинаковые метаданные и объем 100 000 записей. Номинальная, несжатая длина записи 900 байт.

CAULDRON - чистая таблица без старых версий строк. Средняя длина хранимой строки 121 байт - приблизительно 87% сжатия.

CAULDRON1 имеет активную, все еще выполняющуюся транзакцию:

DELETE FROM CAULDRON1;

Каждая строка имеет нулевую (0.00) длину, потому что первичная запись является заглушкой удаления (delete stub), которая содержит только заголовок строки. Все подтвержденные записи были восстановлены как старые версии и сжаты до того же размера, который они имели, когда были первичными записями. Таблица содержит то же количество страниц (4000), что и до операции DELETE. Средний коэффициент заполнения составляет от 85 до 95% для размещения всех заглушек удаления.

CAULDRON2 имеет активную, все еще выполняющуюся транзакцию:

UPDATE CAULDRON2 SET F20FFSET = 5.0

Измененные записи увеличили размер на 2 байта (с 121 до 123), что можно отнести к более низкому уровню сжатия.

Значение 5.0 заменило большинство отсутствующих или нулевых значений, что сделало значение этого поля отличным от других полей. Теперь существует 100 000 старых версий со средним значением 10 байт каждая. Средний коэффициент заполнения увеличен до 99%, а таблица выросла с 138 до 4138 страниц.

Поделиться:
Популярные книги

Семья. Измена. Развод

Высоцкая Мария Николаевна
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Семья. Измена. Развод

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Камень Книга одиннадцатая

Минин Станислав
11. Камень
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Камень Книга одиннадцатая

Никто и звать никак

Ром Полина
Фантастика:
фэнтези
7.18
рейтинг книги
Никто и звать никак

Возвышение Меркурия. Книга 14

Кронос Александр
14. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 14

Идеальный мир для Лекаря 20

Сапфир Олег
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Сумеречный Стрелок 2

Карелин Сергей Витальевич
2. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 2

Сумеречный Стрелок 10

Карелин Сергей Витальевич
10. Сумеречный стрелок
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Сумеречный Стрелок 10