Страницей называется наименьшая единица хранения в файле данных SQL Server. Каждая страница имеет размер 8192 байт и начинается с заголовка размером 96 байт. Это значит, что на каждой странице может храниться 8096 байт данных.Существует несколько типов страниц, каждая из которых поддерживает отличный от других тип данных.
♦ Данные.Этот тип страниц содержит большую часть данных, которые вводятся в таблицы. Единственной категорией данных таблиц, которые на данных страницах не содержатся, являются изображения и крупные текстовые фрагменты, так как они чрезвычайно велики и для них предназначен особый тип страниц.
♦ Глобальная карта размещения (GAM)(Global Allocation Map). Когда таблице требуется в файле данных, в котором она размещена, больше места, SQL Server за один раз распределяет для нее не одну, а восемь последовательных страниц, называемых экстентом. Страницы GAM используются для отслеживания, какие расширения выделены, и какие остались доступными.
♦ Индекс.Индексы используются для ускорения доступа к данным. В них содержится список значений одного поля (или комбинации нескольких полей) таблицы и их ассоциации с номерами записей самой таблицы. Индексы хранятся отдельно от данных на страницах собственного типа.
♦ Карта размещения индексов (IAM)(Index Allocation Map). Несмотря на то что страницы GAM контролируют выделение экстентов, они не следят за тем, для каких целей те используются. Карта размещения индексов отслеживает, для чего используются выделенные экстенты, в частности, для таблиц или индексов.
♦ Страница свободного пространства.Это не пустая страница, как можно было заключить из названия, а специальный тип страниц, используемый для отслеживания свободного пространства на других страницах базы данных. Каждая страница свободного пространства может контролировать пустое пространство до 8000 других страниц. Таким образом, SQL Server при вставке в таблицы новых данных всегда "знает", на каких страницах и сколько свободного пространства имеется.
♦ Текст/изображения.Типы данных char (max), varchar (max) и varbinary (max) были созданы для хранения экстремально больших объектов, размером вплоть до 2 Гбайт. Крупные объекты, такие как изображения и большие документы, сложно извлекать, когда они хранятся в поле одной из таблиц, так как SQL Server в результатах запроса возвращает весь объект. Чтобы разделить экстремально большой объект на небольшие управляемые цепочки, типы данных char (max), varchar (max) и varbinary (max) хранятся на своих собственных страницах. Таким образом, при необходимости возвращения в результатах запроса изображения или большого документа сервер может вернуть определенные их фрагменты (цепочки), а не весь объект в целом.
Файлы журналов транзакций не организованы в страницы и расширения. Они содержат список транзакций, которые модифицировали данные, организованный по принципу "первый поступил — первый обработан" и могут храниться на устройствах с последовательным доступом.
Экстенты
Экстентом (расширением) называют набор из восьми последовательных страниц, используемых для уменьшения фрагментации базы данных. Под фрагментацией понимается факт разброса по всему файлу базы данных страниц, соответствующих одной и той же таблице или индексу. Во избежание фрагментации SQL Server выделяет пространство для таблиц и индексов в расширениях. Таким образом, по крайней мере восемь страниц расположены физически рядом друг с другом, что упрощает для сервера их поиск. Для организации страниц SQL Server использует следующие типы экстентов.
· Однородные экстентыявляются собственностью одного объекта. К примеру, если одна таблица владеет всеми восемью страницами расширения, оно считается однородным.
· Смешанные экстентыиспользуются для объектов, которые слишком малы, чтобы занять собой все восемь страниц. В данном случае SQL Server распределяет отдельные страницы экстента для разных объектов.