Добавлен: 20.10.2018
Просмотров: 739
Скачиваний: 7
REPEATABLE READ (повторяющееся чтение). Транзакция не имеет
доступа к промежуточным или окончательным результатам других
транзакций. Возможны строки-призраки.
READ COMMITED (подтвержденное чтение). Транзакция не имеет
доступа к промежуточным результатам других транзакций. Возможны
несогласованные данные и строки призраки.
READ
UNCOMMITED
(грязное чтение). Транзакция видит
промежуточные и несогласованные данные и строки-призраки.
Предотвращаются пропавшие обновления.
В стандарте SQL 2 уровень изолированности задается оператором SET
TRANSACTION:
SET TRANSACTION … ISOLATION LEVEL [{SERIALAZABLE |
REPEATABLE READ | READ COMMITED | READ UNCOMMITED}]
[{READ WRITE | READ ONLY}]
Гранулированные синхронизационные захваты
Объекты блокирования могут быть разного уровня: БД, файл, отношение,
страница, кортеж. Чем крупнее объект, тем меньше блокировок потребуется
программе, тем меньше накладные расходы. Одновременно возрастает
вероятность конфликта транзакций, уменьшается степень их параллельности.
Для достижения разумного компромисса между требованиями
минимизации
расходов,
уменьшения
конфликтности
и
увеличения
параллельности
был
предложен
механизм
гранулированных
синхронизационных захватов. В соответствии с ним объект может быть
захвачен в режимах S, X, IS, IX, SIX. Используется специальный протокол:
перед захватом объекта в режиме S или X соответствующий объект более
высокого уровня должен быть захвачен в режиме IS, IX или SIX.
Режим IS (Intended for Shared Lock) по отношению к составному объекту
O означает намерение захватить в будущем некоторый входящий в O объект в
S-режиме.
Режим IX по отношению к составному объекту O означает намерение
захватить в будущем некоторый входящий в O объект в X-режиме.
Режим SIX – совместный захват объекта O с намерением впоследствии
захватить входящие в него объекты в монопольном режиме.
Предикатные синхронизационные захваты
Метод гранулированных синхронизационных захватов не решает
проблему фантомов. Эта проблема решается методом предикатных
синхронизационных захватов.
Суть метода. Рассматривается захват двумя транзакциями одного
отношения. Каждая транзакция содержит условие, определяющее множество
обрабатываемых кортежей отношения. Если множества кортежей не
пересекаются, то транзакции можно выполнять параллельно, в противном
случае транзакции выполняются последовательно.