|
|
Вступление
База данных в InterBase состоит из одного или нескольких файлов
файловой системы, соответствующей платформе, для которой реализован
Сервер БД. Каждый файл состоит из страниц фиксированной длины, причём
все файлы одной БД имеют одинаковый размер страницы. Каждая страница
содержит в своём начале некоторую информацию, идентифицирующую тип
страницы, которая называется заголовком. Ниже дано описания структуры
заголовка из файла ods.h
typedef
struct pag {
SCHAR pag_type;
SCHAR pag_flags;
USHORT pag_checksum;
ULONG pag_generation;
ULONG pag_seqno; /* WAL seqno of last update */
ULONG pag_offset; /* WAL offset of last update */
} *PAG
Название поля
|
Размер,
байт
|
Пояснение
|
pag_type |
1
|
тип
страницы |
pag_flags |
1
|
флаги
страницы, например заполненная, "висячая" |
pag_checksum |
2
|
контрольная
сумма |
pag_generation |
4
|
поколение |
pag_seqno |
4
|
номер
последнего изменения при упреждающей записи |
pag_offset |
4
|
смещение
в журнале упреждающей записи |
Каждая страница
уникально идентифицируется 4-байтным номером, начиная с 0 (для страницы-заголовка).
Типы
страниц:
Страница-заголовок
Страницы описания свободного места
Страницы описания транзакций
Страницы указателей
Страницы данных
Главная страница индексов
Страницы индексов (B-деревья)
Страницы двоичных данных (BLOB)
Страницы генераторов
Страницы журнала упреждающей записи
В
исходных текстах они описаны следующим образом:
#define
pag_header 1 /* Database header page */
#define pag_pages 2 /* Page inventory page */
#define pag_transactions 3 /* Transaction inventory page */
#define pag_pointer 4 /* Pointer page */
#define pag_data 5 /* Data page */
#define pag_root 6 /* Index root page */
#define pag_index 7 /* Index (B-tree) page */
#define pag_blob 8 /* Blob data page */
#define pag_ids 9 /* Gen-ids */
#define pag_log 10 /* Write ahead log information */
|
|
|