Индексы на базе В*-деревьев
По умолчанию индекс в Oracle имеет структуру В*-дерева. Свое название она получила из-за сходства с перевернутым деревом (рис. 4.1).
В*-дерево состоит из одного или нескольких промежуточных уровней и одного листового уровня. Промежуточные узлы содержат информацию о диапазоне значений, находящихся на следующем промежуточ-
Puc. 4.1. Индекс на базе B*-depeea
ном уровне. Количество промежуточных уровней между корнем и листовым уровнем называется глубиной индекса. На листовом уровне находятся узлы, содержащие сами индексированные значения и ROWID ассоциированных с ними строк таблицы.
На верхних уровнях В*-дерева узлов мало, поэтому для спуска по дереву требуется относительно небольшое число операций ввода/выво- да. Все листовые узлы расположены в индексе на одной и той же глубине, поэтому для получения любой индексной записи требуется одно и то же количество операций. Это выравнивает производительность доступа по индексу.
Oracle позволяет создавать индекс-таблицы (index organized tables, ЮТ), в которых листовые узлы содержат всю строку данных, а не просто ROWID, указывающий на ассоциированную строку. Для индекс- таблицы требуется меньше места на диске, чем для раздельного хранения индекса и таблицы, поскольку в листовых страницах не нужно хранить ROWID. Однако для индекс-таблиц невозможно задать ограничение UNIQUE, и их нельзя хранить в кластере. Кроме того, для индекс-таблиц не поддерживаются распределение, репликация и секционирование, хотя начиная с версии Oracle Database 10g их можно использовать совместно с Oracle Streams для сбора и применения изменений.
В версии Oracle9i механизм индекс-таблиц подвергся ряду усовершенствований, в частности, снято ограничение на использование битовых индексов в качестве вторичных индексов для индекс-таблиц и реализована возможность создавать, перестраивать и объединять вторичные индексы над индекс-таблицами. В Oracle Database 10g эта тенденция получила
дальнейшее развитие - для индекс-таблиц разрешены репликация и секционирование всех видов. Имеются и другие улучшения.
Достарыңызбен бөлісу: |