Поделиться через


Структуры кучи

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

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

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

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

Просмотр таблиц или последовательное считывание в куче может выполняться просмотром IAM-страниц для нахождения экстентов, хранящих страницы кучи. Так как карта IAM представляет экстенты в том же порядке, в котором они существуют в файлах данных, это означает, что последовательный просмотр кучи выполняется последовательно в каждом файле. Использование IAM-страниц для определения последовательности просмотра означает также, что строки из кучи обычно возвращаются не в том порядке, в котором они вставлялись.

На следующей иллюстрации демонстрируется, как компонент SQL Server Database Engine использует IAM-страницы для извлечения строк данных из кучи с одной секцией.

IAM-страницы получают данные в одну кучу секций

См. также

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

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

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

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