3Pilgrim software
 
Главная Новости Программы Статьи От себя
Программы:
WallPaper Glue 0.1.2
Mp3Namer 1.21
ZipSpan 1.1
 
Структура БД СУБД InterBase [Загрузить]
<<< стр.2 >>>

Страница-заголовок


Страница-заголовок занимает первый блок первого (если таковых несколько) файла БД. Когда сервер InterBase соединяется с БД, он читает первые 1024 байта первого файла БД. Эта страница содержит в своих первых 1024 байтах (а это минимальный размер страницы БД) значения таких важнейших параметров БД, как версия структуры БД (On Disk Structure (ODS) - дословно "надисковая структура") и размер страницы.
Как только сервер InterBase определяет данный файл как файл БД InterBase и проверяет совместимость версии структуры БД (ODS) с версией сервера, он считывает всю страницу-заголовок, исходя из выясненного значения размера страницы; в результате этой операции выясняются названия и диапазоны номеров страниц последующих файлов БД, следующая транзакция и старейшая интересная (oldest interesting) транзакция.
Следующий шаг, к которому готовится InterBase, - это нахождение важнейших системных таблиц и построение внутреннего образа БД.


Страницы указателей

Страница-заголовок также содержит адрес первой страницы указателей для таблицы RDB$PAGES, системной таблицы, позволяющей InterBase находить такие важнейшие страницы, как страницы данных обычных таблиц. Сервер читает первую страницу указателей и затем использует её для обнаружения первой страницы данных таблицы RDB$PAGES. Отсюда сервер уже может найти страницы данных и индексов других системных таблиц.
Эта страница начинается простым заголовком, содержащим тип страницы и номер следующей страницы указателей для данной таблицы. Оставшееся пространство страницы занимают 32-разрядные номера страниц данных, формирующих таблицу. Необходимо отметить, что для каждой таблицы БД определены страницы указателей. Две первые части значения db_key записи (строки) таблицы InterBase представляют собой соответственно номер страницы указателей (для данной таблицы) и смещение от её начала. Таким образом, сервер узнаёт, какую страницу данных занимает данная запись.

Страницы описания транзакций

Таблица RDB$PAGES хранит адреса не только страниц данных. В их число попадают страницы описания транзакций (Transaction Inventory Pages, TIPs). Как и страницы указателей, страницы описания транзакций имеют простой заголовок, включающий тип страницы и номер следующей страницы описания транзакций. Само тело страницы составляют 2-битные объекты, отражающие состояния транзакций в системе. "0" означает, что транзакция ещё не стартовала, активна или канула в лету, не будучи завершена (commited) или откатана(rolled back). "1" означает, что транзакция завершена. "2" - произведён откат. "3" - транзакция неопределённая (limbo), что возможно в середине 2-фазного завершения (two-phase commit).
Чтобы определить состояние транзакции, InterBase использует номер (ID) транзакции в качестве адреса соответствующего 2-битного объекта и читает, в каком из 4-х состояний он находится. Однако, алгоритм сложнее, чем может показаться на первый взгляд, ибо необходимо учитывать заголовки страниц описания транзакций. В случае если одна транзакция проверяет состояние другой и складывается ситуация, когда другая транзакция помечена как активная ("0"), но согласно таблице блокировок (lock table) "умерла", то первая транзакция изменяет состояние второй на "откатана" ("1").

<<< стр.2 >>>
Новости:
Новый WallPaper Glue
Собираю пожелания на Mp3Namer 1.22
Статья "Структура БД СУБД InterBase / Firebird"
 
 
©2001 Алексей Суворов
 
Hosted by uCoz