Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как хранится индекс / 3 сообщений из 3, страница 1 из 1
26.05.2019, 21:14
    #39818477
sergq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранится индекс
Здравствуйте.

Как всегда туплю.

Собственно вопрос. А как хранятся ключи и значения на страницах в базе? Физически
Еще с ключами соображу. А вот со значениями (rdb$db_key) не допереть) вернее есть соображения...

Собственно при создании индекса могут быть два варианта. Либо все ключи уникальные. Тогда каждому ключу будет соответствовать один rdb$db_key.
Но может быть и для одного ключа допустим 1000, 10000 rdb$db_key.

Как они в этих случаях будут храниться на странице?


И по пути такой вопрос. А в не листовых страницах индекса в FB хранятся значения? Или же только в листовых узлах? Вроде как в постгре значения (номера строк) хранятся только в листовых узлах, те на последнем уровне дерева.
...
Рейтинг: 0 / 0
27.05.2019, 01:05
    #39818537
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранится индекс
Очень упрощённо: на индексной странице хранятся пары {ключ, значение}.

Ключ хранится как
- набор флагов, описывающих что именно идёт дальше,
- длина префикса - сколько первых байт этого ключа совпадает с началом предыдущего ключа
- длина остальных данных ключа
- байты с данными ключа
Для ключей-дубликатов получим: длина данных == 0, сами данные не хранятся

Значение есть либо указатель на страницу вниз (для не листовых страниц индекса),
либо физ номер записи в таблице (для листьев)
...
Рейтинг: 0 / 0
27.05.2019, 01:09
    #39818538
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранится индекс
hvladЗначение есть либо указатель на страницу вниз (для не листовых страниц индекса),
либо физ номер записи в таблице (для листьев)Начиная с ODS 11 стало чуть иначе:

Значение есть физ номер записи в таблице (для всех уровней дерева) и указатель на страницу вниз (для не листовых страниц индекса).
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как хранится индекс / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]