powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как хранится индекс
3 сообщений из 3, страница 1 из 1
Как хранится индекс
    #39818477
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

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

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

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

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


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

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

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

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


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