- •Раздел 2 проектирование серверной части приложения баз данных
- •Тема 2.1 sql-сервер InterBase и его основные компоненты
- •Тема 2.2 Физическая организация базы данных InterBase.
- •Тема 2.3 Создание базы данных.
- •Тема 2.4 Домены
- •Создание домена.
- •Тема 2.5 Создание таблиц
- •Определение ключей и ссылочных целостностей.
- •Тема 2.6 Работа с индексами.
- •Тема 2.7 Добавление, изменение, удаление записей
- •Добавление записей
- •Изменение записей.
- •Тема 2.8 Работа с просмотрами view.
- •Тема 2.9 Работа с хранимыми процедурами.
- •Изменение и удаление хранимых процедур
- •Алгоритмический язык хранимых процедур.
- •Тема 2.10 Работа с триггерами
- •Создание триггеров.
- •Тема 2.11 Использование генераторов.
Тема 2.2 Физическая организация базы данных InterBase.
База данных InterBase состоит из последовательно пронумерованных страниц. Нулевая страница является служебной и содержит информацию, необходимую для соединения с базой данных. Размер страницы устанавливается при создании базы данных, но может быть изменен при сохранении и восстановлении базы данных. Одна страница читается за 1 логический доступ к базе данных. Объем буфера ввода-вывода для операций чтения записей определяется количеством страниц. Если база данных будет чаще читаться, объем буфера следует увеличить. Если будет чаще осуществляться запись, размер буфера можно уменьшить. В InterBase поддерживается многоверсионная структура записи. При изменении записи в какой-либо транзакции создается новая версия записи, куда помимо данных записывается номер транзакции и указатель на предыдущую версию записи. Старая версия становится измененной. Каждая стартующая транзакция работает с последней версией записи, изменения для которой подтверждены. Таким образом, параллельно работающие с базой данных транзакции всегда используют разные версии записи, что позволяет снимать блокировки для клиентских приложений, одновременно работающих с одними и теми же данными в базе данных. При удалении записи она также не удаляется физически с диска, а помечается на удаление до тех пор, пока не завершена хотя бы одна активная транзакция, использующая эту запись.
InterBase располагает на одной странице базы данных версии одной записи таблицы. После удаления записей на странице образуются “дырки”. При добавлении новой записи анализируется размер максимальной дыры и если он меньше длины добавляемой записи, происходит компрессия страницы, в процессе которой дырки объединяются. Если освободившегося пространства не хватает для размещения новой записи, она записывается с новой страницы. Выделение страниц никак не оптимизировано. На отдельной служебной странице базы данных хранятся номера всех свободных страниц. При выделении страниц берется первая страница в списке свободных. Если свободной страницы нет, то добавляется новая в конец базы данных, только в этом случае размер базы данных возрастает. Многоверсионная структура записи и неоптимальное выделение страниц ведет к высокой фрагментации базы данных и как следствие к замедлению работы с ними. Поэтому необходимо периодически проводить дефрагментацию базы данных. Дефрагментированная база данных характеризуется расположением записей таблиц базы данных на непрерывных страницах и отсутствием «мусора». Под «мусором» понимаются версии записей, с которыми не работает никакая активная транзакция.
Способы проведения дефрагментации:
сохранение базы данных на дисковом носителе и последующее её восстановление из сделанной резервной копии с помощью утилиты InterBase Server Manager; является наиболее предпочтительным, т.к. в момент сохранения и восстановления базы данных не должно быть активных подключений и потому не может быть активных транзакций;
автоматический сбор мусора, интервал сборки измеряется в транзакциях и по умолчанию составляет 20000 транзакций; является менее предпочтительным, поскольку удаляются только те версии записей, для которых нет активных транзакций. В результате могут быть удалены не все старые версии. При большом числе активных транзакций процесс сборки мусора может существенно замедлить их выполнение.
Таблица 1.1 Типы данных InterBase.
Тип столбца |
Размер, байт |
Описание |
SMALLINT |
2 |
Целочисленные значения от -32768 до 32767 |
INTEGER |
4 |
Целочисленные значения от -2 147 483 648 до 2 147 483 647 |
FLOAT |
4 |
Вещественные числа до 7 значащих цифр в диапазоне от 3,4*10-38 до 3,4*1038 |
DOUBLE PRECISION |
8 |
Вещественные числа до 15 значащих цифр в диапазоне от 3,4*10-308 до 3,4*10308 |
CHAR(n) |
0-32767 |
Символьный столбец длиной в n символов |
VARCHAR(n) |
0-32767 |
Символьный столбец переменной длины, содержащий до n символов |
DATE |
8 |
Дата (может хранить сведения о времени) |
BLOB |
переменный |
Любой тип двоичных данных |