Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
76-86.docx
Скачиваний:
4
Добавлен:
24.09.2019
Размер:
1.03 Mб
Скачать
  1. Типы индексов. Кластеризованный индекс. Процесс разбиения страницы при вставке строки в таблицу, на которой задан кластеризованный индекс.

Типы индексов и переход по индексам

Формально считается, что в СУБД SQL Server предусмотрены два типа индексов (кластеризовавный и некластериаованный), но фактически индексы SQL Server по своему внутреннему устройству подразделяются на три различных типа, указанных ниже.

О Кластеризованные индексы.

О Некластеризованные индексы, которые подразделяются на следующие типы:

• некластеризованные индексы, заданные на неупорядоченной таблице;

• некластеризованные индексы, заданные на кластеризованном индексе.

В кластеризованных и некластеризованных индексах при меняются разные способы физического хранения данных. Кроме того, все три типа индексов отличаются друг от друга тем, что в них СУБД SQL Server поразному осуществляет переход по В-дереву для достижения конечных данных.

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

Индексы создаются либо на кластер изо ванной таблице (таковой называется таблица, имеющая кластеризованный индекс), либо на так называемой неупорядоченной таблице (так называется таблица, не имеющая кластеризованного индекса).

Кластеризованные индексы.

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

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

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

А в том случае, если новая строка логически должна быть добавлена в конце индексной структуры, создается новая страница, но на ней записывается только новая строка

  1. Кластеризованные таблицы. Неупорядоченные таблицы.

Кластеризованной называется любая таблица, на которой задан кластеризованный индекс. Подробное описание кластеризованных индексов приведено далее в этой главе, но по существу применение кластеризованного индекса влечет за собой то, что данные в таблице, на которой он задан, хранятся физически в указанном порядке. Отдельные строки в таблице однозначно идентифицируются с помощью кластеризоанного ключа; так называются столбцы, которые определяют кластеризованный индекс.

Применение кластеривованного индекса, не обеспечивающего уникальную идентификацию строк, может привести к нарушeuuю в работе. Дело в том, что если кластеризованный индекс не являетсяуникальным, то не может исnолъзоватъся для однозначной идентификации строки: Решение этой проблемы эаключается в том, что в СУБД SQL Server uсnолъзуются некоторые механизмы, скрытые от пользователя. В частности; СУБД SQL Server поддерживает уникальность каждого кластеризованного индекса, даже если он по определению не является уникальным. К счастью, применяемый nри этом способ не влияет на то, как Фактuческиски. nрouсходит работа с самим индексом. Пользователь попрежнему может nри желании вставлять строки с повторяющимися значениями индекса, а СУБД SQL Server добавляет к ключу внутренний суффuкс для обеспечения того, чтобы каждая строка имела уникальный идентификатор.

Неупорядоченные таблицы

Неупорядоченной таблицей называется любая таблица, на которой не задан кластеризованный индекс. При использовании таких таблиц создается уникальный идентификатор, называемый идентификатором строки (Row ID - RID). Идентификатор RID формируется на основе использования данных об экстенте, странице и смещении строки (измеряемом в позициях от начала страницы) для данной строки. Идентификатор RID требуется, только если отсутствует кластеризованный ключ (на таблице не задан кластеризованный индекс).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]