6
Основной
собственно данные
Карта свободного
пространства
в страницах после
очистки
Карта видимости
отмечает страницы,
на которых все
версии строк
видны во всех снимках
Слои и файлы
сегмент
1 ГБ
страница
8 КБ
Обычно каждому объекту соответствует несколько слоев (forks).
Каждый слой — это набор сегментов (то есть файл или несколько
файлов). Все файлы-сегменты разбиты на отдельные страницы,
обычно по 8 Кбайт (размер можно установить для всего кластера
только при сборке сервера). Страницы разных объектов считываются
с диска совершенно однотипно через общий механизм буферного кеша.
Основной слой — это собственно данные: версии строк таблиц или
строки индексов.
Слой vm (visibility map) — битовая карта видимости. В ней отмечены
страницы, которые содержат только актуальные версии строк, видимые
во всех снимках данных. Иными словами, это страницы, которые давно
не изменялись и успели полностью очиститься от неактуальных версий.
Карта видимости применяется для оптимизации очистки (отмеченные
страницы не нуждаются в очистке) и для ускорения индексного доступа.
Дело в том, что информация о версионности хранится только для
таблиц, но не для индексов (поэтому у индексов не бывает карты
видимости). Получив из индекса ссылку на версию строки, нужно
прочитать табличную страницу, чтобы проверить ее видимость. Но если
в самом индексе уже есть все нужные столбцы, и при этом страница
отмечена в карте видимости, то к таблице можно не обращаться.
Слой fsm (free space map) — карта свободного пространства. В ней
отмечено доступное место внутри страниц, образующееся при очистке.
Эта карта используется при вставке новых версий строк, чтобы быстро
найти подходящую страницу.