Структуры кластеризованного индекса

В SQL Server индексы организованы в виде B-деревьев. Каждая страница в B-дереве индекса называется узлом индекса. Верхний узел B-дерева называется корневым. Узлы нижнего уровня индекса называются конечными. Все уровни индекса между корневыми и конечными узлами называются промежуточными. В кластерном индексе конечные узлы содержат страницы данных таблицы. На страницах индекса корневого и промежуточного узлов находятся строки индекса. Каждая строка индекса содержит ключевое значение и указатель либо на страницу промежуточного уровня B-дерева, либо на строку данных на конечном уровне индекса. Страницы на каждом уровне связаны в двунаправленный список.

Для каждого кластерного индекса таблица sys.partitions содержит одну строку со значением index_id равным 1 для каждой секции индекса. По умолчанию, кластерный индекс занимает одну секцию. Если кластерный индекс занимает несколько секций, каждая секция содержит B-дерево, содержащее данные этой секции. Например, если кластерный индекс занимает четыре секции, существует четыре B-дерева: по одному в каждой секции.

В зависимости от типов данных, каждая структура кластерного индекса состоит из одной или более единиц размещения, которые применяются для хранения и управления данными секции. Для каждой секции кластерный индекс содержит, как минимум, одну единицу размещения IN_ROW_DATA. Для хранения столбцов больших объектов (LOB) кластерному индексу требуется одна единица размещения LOB_DATA для каждой секции. Кроме того, для хранения строк переменной длины, превышающих ограничение на размер строки, равное 8 060 байтам, для каждой секции требуется одна единица размещения ROW_OVERFLOW_DATA. Дополнительные сведения о единицах размещения см. в разделе Организация таблиц и индексов.

Страницы в цепочке данных и строки, которые они содержат, упорядочены по значению ключа кластерного индекса. Все строки вставляются так, чтобы значение ключа составляло вместе с существующими строками упорядоченную последовательность. Коллекции страниц B-дерева закреплены указателями в системном представлении sys.system_internals_allocation_units.

ms177443.note(ru-ru,SQL.90).gifВажно!
Системное представление sys.system_internals_allocation_units предназначено только для внутреннего использования и может быть изменено. Совместимость не гарантируется.

Столбец root_page в таблице sys.system_internals_allocation_units содержит указатели на корневые узлы кластерного индекса для каждой секции. SQL Server движется вниз по индексу, чтобы найти строку, соответствующую ключу кластерного индекса. Чтобы найти диапазон ключей, SQL Server сначала находит начальное значение ключа в диапазоне, а затем сканирует страницы данных, используя указатели на следующую и предыдущую страницу. Чтобы найти первую страницу в цепочке страниц данных, SQL Server движется по самым левым указателям от корня индекса.

На следующем рисунке изображена структура кластерного индекса для одной секции.

Уровни кластеризованного индекса

См. также

Основные понятия

Структуры кучи
Структуры некластеризованных индексов
Организация таблиц и индексов

Справка и поддержка

Получение помощи по SQL Server 2005