Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Знакомство с SQL Server2000_1.doc
Скачиваний:
5
Добавлен:
16.12.2018
Размер:
334.85 Кб
Скачать

Распределение и повторное использование памяти

SQL Server 2000 эффективно осуществляет быстрое выделение страниц для объектов и повторное использование памяти, освобожденной при удалении строк. Эти операция являются внутренними по отношению к системе, они обращаются к невидимым для пользователя структурам данных, хотя на них и есть ссылки в сообщениях SQL Server.

В SQL Server для хранения сведений о распределении экстентов применяются карты распределения двух типов.

  • • Глобальная карта распределения (Global Allocation Map, GAM). В страницах GAM регистрируются выделенные экстенты. Каждая GAM содержит сведения о более чем 64 000 экстентах (или примерно о 4 Гб данных). В GAM каждому экстенту соответствует один бит. Если он равен 1, экстент свободен, а если 0 — занят,

  • Разделяемая глобальная карта распределения (Shared Global Allocation Map, SGAVK В страницах SGAM регистрируются экстенты, которые в данный момент используются как смешанные и в которых есть по крайней мере одна свободная страница. Каждая SGAM содержит информацию о 64 000 экстентах (или около 4 Гб данных). В SGAM каждому экстенту соответствует один бит. Если он равен 1, экстент используете*! Как смешанный и у него есть свободные страницы. Если бит равен 0, экстент не используется как смешанный или, если он используется как смешанный экстент, все его страницы заняты.

Структура таблиц и индексов

SQL Server 2000 поддерживает индексы представлений. Первый индекс представления должен быть кластерным. Во время исполнения оператора CREATE INDEX для представления результирующий набор для этого представления сохраняется в базе данных, при этом используется структура, аналогичная структуре таблицы с кластерным индексом.

Строки с данными каждой таблицы или индексированного представления хранится в наборе 8-килобайтных страниц данных. У каждой страницы данных есть 96-байтный заголовок, который содержит системную информацию, например идентификатор таблицы, которой принадлежит страница. Если используются страницы, связанные в список, то в заголовке страницы также находятся указатели на предыдущую и последующую страницы, В конце страницы располагается таблица смешений строк. Остаток страницы заполнен строками данных, как показано на рис. 1-5.

Рис. 1*5. Организация страниц данных

Для организации страниц данных в таблицах SQL Server 2000 применяется один из двух методов: кластерные таблицы или кучи.

  • Кластерные таблицы. Это таблицы с кластерным индексом. Строки данных хранятся в порядке, который определяется ключом кластерного индекса. Индекс реализован в виде сбалансированного дерева (В-дерева), которое поддерживает быстрое получение строк на основе значений их ключа кластерного индекса. Страницы на каждом уровне индекса, в том числе страницы на уровне листьев дерева, связаны в двусвязный список, но переход с одного уровня на другой осуществляется посредством ключа.

  • Кучи. Это таблицы без кластерною индекса. Строки данных хранятся без какого-либо определенного порядка, и последовательность страниц данных также не упорядочена.

Страницы данных не организованы в связный список.

Структура индексированных представлений аналогична структуре кластерных таблиц.

SQL Server также поддерживает до 249 некластерных индексов для любой таблицы или индексированного представления. Некластерные индексы также имеют структуру В-дерева, но используют ее иначе, чем кластерные. Отличие в том, что некластерные индексы не влияют на порядок строк. Кластерные таблицы и индексированные представления хранят свои строки данных в порядке, который определяется ключом кластерного индекса. Некластерные индексы, определенные для таблицы, не влияют на совокупность страниц данных кучи. Страницы данных остаются в куче до тех пор, пока не будет определен кластерный индекс.