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


         

Структура хранения данных для MS SQL 6.5 - часть 2


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

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

  • номер следующего блока в цепи;
  • номер предыдущего блока в цепи;
  • битовую карту распределения блока (Allocation bitmap);
  • битовую карту перераспределения блока (Deallocation bitmap);
  • идентификатор индекса (если таковой есть), размещенного на блоке;
  • статус.
  • Битовая карта распределения блока хранится в единственном байте, каждый бит которого соответствует одной странице блока. Если бит равен 1, то страница в данный момент содержит данные, если 0 - то страница свободна.

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

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

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

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

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

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

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




    Содержание  Назад  Вперед