Глава 61. Определение интерфейса метода доступа к индексу#

Глава 61. Определение интерфейса метода доступа к индексу

Глава 61. Определение интерфейса метода доступа к индексу

Эта глава определяет интерфейс между основной системой Tantor SE-1C и методами доступа к индексам, которые управляют отдельными типами индексов. Основная система ничего не знает о индексах, кроме того, что указано здесь, поэтому возможно разработать совершенно новые типы индексов, написав дополнительный код.

Все индексы в Tantor SE-1C технически известны как вторичные индексы; то есть, индекс физически отделен от файла таблицы, которую он описывает. Каждый индекс хранится как своя собственная физическая связь, и поэтому описывается записью в каталоге pg_class. Содержимое индекса полностью контролируется его методом доступа к индексу. На практике все методы доступа к индексам разделяют индексы на страницы стандартного размера, чтобы они могли использовать обычный менеджер хранения и буферный менеджер для доступа к содержимому индекса. (Все существующие методы доступа к индексам, кроме того, используют стандартный макет страниц, описанный в Раздел 70.6, и большинство используют тот же формат для заголовков кортежей индекса; но эти решения не навязываются методу доступа).

Индекс является эффективным отображением некоторых значений ключей данных на идентификаторы кортежей или TID, версий строк (кортежей) в родительской таблице индекса. TID состоит из номера блока и номера элемента внутри этого блока (см. Раздел 70.6). Этой информации достаточно для извлечения конкретной версии строки из таблицы. Индексы не знают о том, что в рамках MVCC может существовать несколько версий одной и той же логической строки; для индекса каждый кортеж является независимым объектом, который требует своей собственной записи в индексе. Таким образом, обновление строки всегда создает новые записи индекса для строки, даже если значения ключей не изменились. (HOT-кортежи являются исключением из этого утверждения; но индексы с ними также не работают). Записи индекса для удаленных кортежей восстанавливаются (при выполнении вакуумирования), когда сами удаленные кортежи восстанавливаются.