Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЭАИС.docx
Скачиваний:
1
Добавлен:
21.12.2018
Размер:
41.1 Кб
Скачать

Блокировки намерений

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

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

Уровни изоляции

Уровни изоляции определяет степень изолированности транзакций друг от друга.

Уровни изоляции:

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

  2. Завершенное чтение. Гарантирует что не возникнут проблемы грязного чтения, для этого сервер использует коллективные блокировки.

  3. Повторяющееся чтение. Решает проблемы грязного чтения и неповторяемого чтения.

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

Курсоры

Курсоры представляют собой, механизм обмена данными между сервером и клиентом. Курсор позволяет клиентским приложениям работать не с полным набором данных а лишь с одной или несколькими строками.

Реализация курсора

Курсоры бывают двух видов:

1.Курсоры сервера. Действуют на сервере и реализуют программный интерфейс для приложений ODBC и других драйверов. Клиент посылает запрос на выполнение одной из доступных операций курсора. Запрос обрабатывается соответствующим интерфейсом сервера и затем выполняется

2.Курсоры клиента. Выбирает весь результирующий набор строк из сервера и сохраняет его локально.

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

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

Типы курсоров

  1. Статические курсоры. При открытии статического курсора (курсор моментального снимка) сервер выбирает все данные соответствующие заданным критериям и сохраняет полный результирующий набор строк в БД. На время открытия курсора сервер устанавливает блокировку на все строки, включенные в полный результирующий набор курсора. Статический курсор не изменяется после создания и всегда отображает тот набор данных, который существовал в БД на момент его открытия.

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

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

Управление курсорами

  1. Создание курсоров

  2. Открытие курсоров (происходит наполнение курсора данными)

  3. Выборка из курсора и изменение строк данных с помощью него

  4. Закрытие курсоров

  5. Освобождение курсора (удаление)