Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 2 Проектирование серверной части приложе...doc
Скачиваний:
3
Добавлен:
16.11.2019
Размер:
241.15 Кб
Скачать

Тема 2.2 Физическая организация базы данных InterBase.

База данных InterBase состоит из последовательно пронумерованных страниц. Нулевая страница является служебной и содержит информацию, необходимую для соединения с базой данных. Размер страницы устанавливается при создании базы данных, но может быть изменен при сохранении и восстановлении базы данных. Одна страница читается за 1 логический доступ к базе данных. Объем буфера ввода-вывода для операций чтения записей определяется количеством страниц. Если база данных будет чаще читаться, объем буфера следует увеличить. Если будет чаще осуществляться запись, размер буфера можно уменьшить. В InterBase поддерживается многоверсионная структура записи. При изменении записи в какой-либо транзакции создается новая версия записи, куда помимо данных записывается номер транзакции и указатель на предыдущую версию записи. Старая версия становится измененной. Каждая стартующая транзакция работает с последней версией записи, изменения для которой подтверждены. Таким образом, параллельно работающие с базой данных транзакции всегда используют разные версии записи, что позволяет снимать блокировки для клиентских приложений, одновременно работающих с одними и теми же данными в базе данных. При удалении записи она также не удаляется физически с диска, а помечается на удаление до тех пор, пока не завершена хотя бы одна активная транзакция, использующая эту запись.

InterBase располагает на одной странице базы данных версии одной записи таблицы. После удаления записей на странице образуются “дырки”. При добавлении новой записи анализируется размер максимальной дыры и если он меньше длины добавляемой записи, происходит компрессия страницы, в процессе которой дырки объединяются. Если освободившегося пространства не хватает для размещения новой записи, она записывается с новой страницы. Выделение страниц никак не оптимизировано. На отдельной служебной странице базы данных хранятся номера всех свободных страниц. При выделении страниц берется первая страница в списке свободных. Если свободной страницы нет, то добавляется новая в конец базы данных, только в этом случае размер базы данных возрастает. Многоверсионная структура записи и неоптимальное выделение страниц ведет к высокой фрагментации базы данных и как следствие к замедлению работы с ними. Поэтому необходимо периодически проводить дефрагментацию базы данных. Дефрагментированная база данных характеризуется расположением записей таблиц базы данных на непрерывных страницах и отсутствием «мусора». Под «мусором» понимаются версии записей, с которыми не работает никакая активная транзакция.

Способы проведения дефрагментации:

  1. сохранение базы данных на дисковом носителе и последующее её восстановление из сделанной резервной копии с помощью утилиты InterBase Server Manager; является наиболее предпочтительным, т.к. в момент сохранения и восстановления базы данных не должно быть активных подключений и потому не может быть активных транзакций;

  2. автоматический сбор мусора, интервал сборки измеряется в транзакциях и по умолчанию составляет 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

переменный

Любой тип двоичных данных