Базы данных. Вводный курс


Гранулированные синхронизационные блокировки - часть 2


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

в режиме SIX (а до этого заблокировать в режиме IS файл, в котором располагается таблица Tab).

Таблица 9.2. Совместимость блокировок S, X, IS, IX и SIX


  X S IX IS SIX
- да да да да да
X нет нет нет нет нет
S нет да нет да нет
IX нет нет да да нет
IS нет да да да да
SIX нет нет нет да нет

В таб. 9.2 приведена таблица совместимости блокировок S, X, IS, IX и SIX. Немного поясним правила совместимости. Должно быть понятно, что для атомарных объектов разумны только блокировки в режимах S и X, для которых правила совместимости остаются такими же, как были показаны в таб. 9.1. Пусть теперь o

– это некоторый составной объект.

Тогда блокировка объекта o

в режиме X в транзакции T1

не совместима с блокировкой этого объекта в режимах X, S, IX, IS или SIX в транзакции T2. Действительно, блокировка объекта o

в режиме X в транзакции T1

направлена на то, чтобы изменять объект o

целиком. Несовместимость блокировки объекта o

в режиме X в транзакции T1

с его блокировкой в режиме X или IX в транзакции T2

устраняет конфликты транзакций T1

и T2

вида W/W. Несовместимость блокировки объекта o

в режиме X в транзакции T1

с его блокировкой в режиме S или IS в транзакции T2

устраняет конфликты транзакций T1

и T2

вида W/R. Наконец, несовместимость блокировки объекта o

в режиме X в транзакции T1

с его блокировкой в режиме SIX в транзакции T2

устраняет конфликты транзакций T1

и T2

вида W/R и W/W.

Блокировка объекта o

в режиме S в транзакции T1

совместима с блокировкой этого объекта в режимах S или IS в транзакции T2, поскольку эти блокировки в транзакциях T1

и T2

направлены только на то, чтобы только читать некоторые объекты o', входящие в o. Блокировка объекта o

в режиме S в транзакции T1

не совместима с блокировкой этого объекта в режимах X, IX или SIX в транзакции T2, поскольку любая из этих блокировок направлена на то, чтобы изменять в транзакции T2




- Начало -  - Назад -  - Вперед -