Базы данных - модели, разработка, реализация

       

5 MS SQL Server логическая


В версии 6.0 и 6. 5 MS SQL Server логическая структура хранения рассматривается в следующей иерархии [1]. Файлы операционной системы представляются как устройства для хранения БД (Device), устройства нумеруются. Сервер может управлять 256 устройствами. Главное устройство называется MASTER: на нем хранятся системные базы данных: Master, Model, Pubs, TempDb.

Устройство Master имеет номер 0 - ноль.

Каждое устройство разбивается не более чем на 16 777 216 виртуальных страниц по 2 Кбайта (Virtual page), максимальный размер устройства 32 Гбайт.

Первые 4 страницы устройства Master заняты под блок конфигурации (Configuration block) - там хранятся все параметры конфигурации сервера. На устройствах размещаются конкретные базы. На каждом устройстве может быть размещено несколько баз, но и одна база может быть размещена на нескольких устройствах.

Каждая страница БД имеет свой уникальный номер.

Физически используются 3 единицы хранения данных:

  • страница;


  • блок (extent) - 16Кб из 8 следующих друг за другом страниц;


  • единица размещения (Allocation Unit) - 512 Кб из 32 последовательных блоков (256 страниц).


  • При создании новой базы данных пространство для нее отводится единицами размещения. Минимальный объем базы данных для данной версии сервера равен 1 Мбайт, то есть составляет 2 единицы размещения.

    Страницы бывают пяти типов:

  • страницы размещения (Allocation page);


  • страницы данных (Data page);


  • индексные страницы (Index page);


  • текстовые страницы (Text/image page);




  • статистические страницы (Distribution page).


  • Любая страница имеет заголовок, занимающий 32 байта. Заголовок содержит номер страницы, номера предыдущей и следующей страниц, идентификатор объекта - владельца страницы и сведения о свободном пространстве на странице. Как видно из заголовка, страницы связаны в двунаправленный список.

    Первая страница каждой единицы размещения является страницей размещения. Таким образом, все страницы, кратные 256, начиная с 0 являются страницами размещения. Они хранят информацию, необходимую для управления размещением страниц внутри единицы размещения.


    Страница размещения содержит 32 16 - байтовых структуры, по одной на каждый блок. Каждая структура содержит следующую информацию:

  • идентификатор объекта - владельца блока;


  • 188

  • номер следующего блока в цепи;


  • номер предыдущего блока в цепи;


  • битовую карту распределения блока (Allocation bitmap);


  • битовую карту перераспределения блока (Deallocation bitmap);


  • идентификатор индекса (если таковой есть), размещенного на блоке;


  • статус.


  • Битовая карта распределения блока хранится в единственном байте, каждый бит которого соответствует одной странице блока. Если бит равен 1, то страница в данный момент содержит данные, если 0 - то страница свободна.

    Карта перераспределения применяется для отслеживания страниц, которые освобождаются в течение транзакций. Реально страница помечается как пустая только после успешной фиксации (завершения) транзакции. Это делается, чтобы другие транзакции не обращались к странице до подтверждения того факта, что она освобождена.

    Все страницы в блоке могут использоваться только одной таблицей или ее индексом. Это означает, что таблица может занимать минимально 1 блок - 16 Кбайт, даже если она содержит всего несколько строк.

    Страницы данных используются для хранения собственно данных. Структурно страницу данных можно подразделить на три зоны: заголовок, строки данных и таблицу смещения (см. рис. 9.14).

    Рис. 9.14. Структура страницы данных для MS SQL Server 6.5

    Строка данных должна полностью умещаться на странице, поэтому существуют ограничения на длину строки. Размер страницы 2048 байт, 32 байта занимает заголовок. Кроме того, в таблице смещения отводится по 2 байта на каждую строку на странице.

    Страницы данных, относящиеся к одной таблице, объединяются в двунаправленный список и организуют цепочки.

    Данные хранятся на страницах в виде строк (кортежей). Каждая строка данных кроме собственно данных хранит дополнительную форматирующую информацию. Длина строки зависит от определения полей таблицы и конкретных данных в ней. Независимо от объявления, каждая строка имеет номер и поле с количеством полей переменной длины (к ним относятся также поля, допускающие



    189

    неопределенные значения NULL). Оба эти поля имеют размер по одному байту, следовательно, количество строк на странице не превышает 256, а на количество полей также существует внешнее ограничение 250 полей в одной таблице. Структура строки таблицы приведена на рис. 9.15.

    Рис. 9.15. Структура строки данных для MS SQL Server 6.5

    Вторая часть - это необязательная область, она существует только тогда, когда имеются в записи поля переменной длины.

    Таблица смещений (Column offset table) состоит из:

  • таблицы подстройки смещений (Offset table adjust bytes) - по 1 дополнительному байту на каждое поле, смещение которого превышает 256 плюс 1 байт;


  • указателя на местоположение таблицы смещений;


  • указателя на местоположение полей переменной длины (1 байт на каждое поле).


  • Указатели занимают два последних байта в каждой структуре и поэтому они доступны для анализа.


    Содержание раздела