Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Понятие курсора. Типы курсоров.

Понятие индекса.

Основная проблема в СУБД – это поиск нужных данных за минимальное время.

Быстрый поиск может быть выполнен в случае, если данные отсортированы.

Сортировка данных в таблице невозможна, т.к. критериев поиска может быть несколько.

Поэтому для таблицы с данными создаются специальные таблицы для каждого критерия поиска, которые называются индексы.

Индекс – это структура данных для быстрого поиска записей в таблице по значению ключа.


 

43. Методы организации индекса:

· Первичного ключа

o Плотным индексом (некластерный индекс) – индексно-прямой файл

o Неплотным индексом (кластерный индекс) – индексно-последовательный файл

o Б-деревья

· Вторичного ключа

o Инвертируемые списки

Оператор создания индекса

СУБД всегда создает индекс для первичного ключа таблицы

Для создания индексов других полей используется оператор SQL

CREATE [UNIQUE] INDEX имя_индекса

ON имя_таблицы (имя_столбца [ ASC | DESC ] [ … ])

В каждой СУБД оператор создания индексов содержит дополнительные предложения специфические для каждой СУБД.

CREATE [UNIQUE] создание уникального индекса

[ CLASTERED | NONCLASTERED ] создание неплотного или плотного индекса

ON { имя_таблицы | имя_представления }

(имя_столбца [ ASC | DESC ] [ … ]) по возрастанию или убыванию

WITH

[ <параметры> [,…n] ]

[ ON имя_файла_группы ] расположение индекса в файлах ОС БД

<параметры> - это

{ PAD_INDEX | резервирование на каждой странице индекса свободного пространства

FILLFACTOR = %запол. | степень заполнения свободного пространства

IGNORE_DUP_KEY | Поведение сервера при появлении дублей стр

DROP_EXISTING | Поведение сервера при наличии индекса

STATISTICS_NORECOMPUTE |

SORT_IN_TEMPDB

}


 

Плотный индекс

Плотный индексный файл предполагает размещение записей в файле в произвольном порядке и создание другого файла с индексами, с помощью которого будут отыскиваться требуемые записи. Этот дополнительный файл называется плотным индексом.

Плотный индекс состоит из индексов (k, р), где р - указатель на запись с ключом k в основном файле. Все индексы в индексном файле отсортированы по значению ключа.

Алгоритм поиска данных:


Неплотный индекс

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

Алгоритм добавления записи:


Индекс B-дерево.

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

Количество обращений к диску при этом для поиска любой записи одинаково и равно количеству уровней в построенном дереве. Такие деревья называются сбалансированными (balanced) именно потому, что путь от корня до любого листа в этом древе одинаков. Именно термин «сбалансированное» от английского «balanced» — «сбалансированный, взвешенный» и дал название данному методу организации индекса.

Инвертированные списки.

Для обеспечения ускорения доступа по вторичным ключам используются структуры, называемые инвертированными списками, которые послужили основой организации индексных файлов для доступа по вторичным ключам. Инвертированный список - это двухуровневая индексная структура. Здесь на первом уровне находится файл, в котором упорядочено расположены значения вторичных ключей. Каждая запись с вторичным ключом имеет ссылку на номер блока в цепочке блоков, содержащих номера записей с данным значением вторичного ключа. На 2 уровне находится цепочка блоков, содержащих номера записей, имеющих одно и то же значение вторичного ключа. При этом блоки 2 уровня упорядочены по значению вторичного ключа. И наконец, на 3 уровне находится собственно основной файл. Механизм доступа к записям по вторичному ключу при подобной организации записей весьма прост. На первом шаге ищем в области 1 уровне заданное значение вторичного ключа, а затем по ссылке считываем блоки 2 уровня, содержащие номера записей с заданным значениями вторичного ключа, а далее уже прямым доступом загружаем в рабочую область пользователя содержимое всех записей, содержащих заданное значение вторичного ключа.

Понятие курсора. Типы курсоров.

Курсор в SQL – это область в памяти базы данных, которая предназначена для хранения последнего оператора SQL. Если текущий оператор – запрос к базе данных, в памяти сохраняется и строка данных запроса, называемая текущим значением, или текущей строкой курсора. Указанная область в памяти поименована и доступна для прикладных программ.

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

Категории курсоров:

· Последовательные (позволяют выбирать данные только в одном направлении – от начала к концу)

· Прокручиваемые (предоставляют большую свободу действий – допускается перемещение в обоих направлениях и переход к произвольной строке результирующего набора курсора)

SQL Server поддерживает курсоры:

· Статические (В схеме со статическим курсором информация читается из базы данных один раз и хранится в виде моментального снимка (по состоянию на некоторый момент времени), поэтому изменения, внесенные в базу данных другим пользователем, не видны)

· Динамические (Динамический курсор поддерживает данные в "живом" состоянии, но это требует затрат сетевых и программных ресурсов)

· Последовательные (Последовательные курсоры не разрешают выполнять выборку данных в обратном направлении. Пользователь может выбирать строки только от начала к концу курсора)

· управляемые набором ключей (Записи идентифицируются на момент выборки, и тем самым отслеживаются изменения)


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...