Страницы и экстенты

Основной единицей хранилища данных в SQL Server является страница. Место на диске, предоставляемое для размещения файла данных (MDF- или NDF-файл) в базе данных, логически разделяется на страницы с непрерывным перечислением от 0 до n. Дисковые операции ввода-вывода выполняются на уровне страницы. А именно, SQL Server считывает или записывает целые страницы данных.

Экстенты — это коллекция, состоящая из восьми физически непрерывных страниц; они используются для эффективного управления страницами. Все страницы хранятся в экстентах.

Страницы

В SQL Server размер страницы составляет 8 КБ. Это значит, что в одном мегабайте базы данных SQL Server содержится 128 страниц. Каждая страница начинается с 96-байтового заголовка, который используется для хранения системных данных о странице. Эти данные включают номер страницы, тип страницы, объем свободного места на странице и идентификатор единицы размещения объекта, которому принадлежит страница.

В следующей таблице представлены типы страниц, используемые в файлах данных базы данных SQL Server.

Тип страницы Содержимое

Данные

Строки данных со всеми данными, кроме данных типа text, ntext, image, nvarchar(max), varchar(max) и varbinary(max), а также данными типа xml, когда параметр текст в строке установлен в значение ON.

Индекс

Записи индекса.

Текст/изображение

Типы данных больших объектов:

  • text, ntext, image, nvarchar(max), varchar(max), varbinary(max) и xml.

Столбцы переменной длины, когда строки данных превышают размер 8 КБ:

  • varchar, nvarchar, varbinary и sql_variant.

Схема размещения глобальных объектов, схема размещения общих глобальных объектов

Сведения о том, размещены ли экстенты.

Свободное место на страницах

Сведения о размещении страниц и доступном на них свободном месте.

Схема распределения индекса

Сведения об экстентах, используемых таблицей или индексом для единицы размещения.

Схема массовой замены

Сведения об измененных массовыми операциями со времени последнего выполнения инструкции BACKUP LOG для единицы размещения.

Схема разностной замены

Сведения об измененных экстентах с момента последнего выполнения инструкции BACKUP DATABASE для единицы размещения.

ms190969.note(ru-ru,SQL.90).gifПримечание.
Файлы журнала не содержат страниц, в них содержится ряд записей журнала.

Строки данных заносятся на страницу последовательно, сразу же после заголовка. Таблица смещения строк начинается в конце страницы; каждая таблица смещения строк содержит одну запись для каждой строки на странице. Каждая запись регистрирует, насколько далеко от начала страницы находится первый байт строки. Записи в таблице смещения строк находятся в обратном порядке относительно последовательности строк на странице.

Страница данных SQL Server со смещениями строк

Поддержка больших строк

Строки не могут занимать страницы в SQL Server 2005, однако фрагменты строки могут быть удалены со страницы строки, чтобы строка действительно была очень большой. Максимальный объем данных и служебного кода, содержащихся в одной строке на странице, составляет 8 060 байт (8 КБ). Однако сюда не включены данные, хранимые в типе страницы «Текст/изображение». В SQL Server 2005 это ограничение не такое строгое для таблиц, содержащих столбцы, относящиеся к типам данных varchar, nvarchar, varbinary или sql_variant. Когда общий размер строк всех фиксированных и переменных столбцов в таблице превышает предел в 8 060 байт, SQL Server динамически перемещает один или более столбцов переменной длины на страницы в единице размещения ROW_OVERFLOW_DATA, начиная со столбца с наибольшей шириной. Это действие выполняется всегда, когда в результате операций вставки или обновления общий размер строки выходит за предел в 8 060 байт. Когда происходит перемещение столбца на страницу в единице размещения ROW_OVERFLOW_DATA, 24-байтовый указатель на исходной странице в единице размещения IN_ROW_DATA сохраняется. Если при последующей выполняемой операции размер строки уменьшается, SQL Server динамически перемещает столбцы обратно на исходную страницу данных. Дополнительные сведения см. в разделе Превышающие размер страницы данные строки, превышающие 8 КБ.

Экстенты

Экстенты являются основными единицами, в которых организовывается пространство. Экстент состоит из восьми непрерывных страниц или 64 КБ. Это значит, что в одном мегабайте базы данных SQL Server содержится 16 экстентов.

Чтобы сделать распределение места эффективным, SQL Server не размещает целые экстенты в таблицы с небольшим объемом данных. SQL Server имеет два типа экстентов.

  • Равномерные экстенты принадлежат одному объекту; все восемь страниц в кластере могут быть использованы только этим владеющим объектом.
  • Смешанные экстенты могут находиться в общем пользовании у не более восьми объектов. Каждая из восьми страниц в экстенте может находиться во владении разных объектов.

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

Смешанные и равномерные экстенты

См. также

Другие ресурсы

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

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

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