Проблема несовместимого анализа

На рис. 15.10 приведена измененная версия отношения (рис. 15.5) с перечислением чередующихся транзакций согласно протоколу блокировки. Операция обновления для транзакции B в момент времени t6 не будет выполнена. Дело в том, что она является неявным запросом с заданием Х-блокировки для кортежа СЧЕТ 1, а этот запрос вступает в конфликт с S-блокировкой, уже заданной транзакцией A. Таким образом, транзакция B переходит в состояние ожидания. Точно так же операция извлечения для транзакции A в момент времени t7 не будет выполнена. Дело в том, что она является неявным запросом с заданием S-блокировки для кортежа СЧЕТ 3, а этот запрос вступает в конфликт с Х‑блокировкой, уже заданной транзакцией B. Таким образом, транзакция A переходит в состояние ожидания. Следовательно, блокировка хотя и помогает решить одну проблему (а именно проблему несовместимого анализа), но приводит к необходимости решения другой проблемы (а именно проблемы возникновения тупиковой ситуации).

 

СЧЕТ 1 СЧЕТ 2 СЧЕТ 3
Транзакция A Время Транзакция B
Извлечение кортежа СЧЕТ 1: (задание S-блокировки для СЧЕТ 1) СУММА = 40 t1
Извлечение кортежа СЧЕТ 1: (задание S-блокировки для СЧЕТ 2) СУММА = 90 t2
t3 Извлечение кортежа СЧЕТ 3: (задание S-блокировки для СЧЕТ 3)
t4 Обновление кортежа СЧЕТ 3: (задание X-блокировки для СЧЕТ 3) 30 ® 20
t5 Извлечение кортежа СЧЕТ 1: (задание S-блокировки для СЧЕТ 1)
t6 Обновление кортежа СЧЕТ 1: (задание X-блокировки для СЧЕТ 1) 40 ® 50
t7 Ожидание
Извлечение кортежа СЧЕТ 3: (задание S-блокировки для СЧЕТ 3) t8 Ожидание
Ожидание   Ожидание

 

рис. 15.10. Проблема несовместимого анализа разрешается, но в момент времени t7 возникает тупиковая ситуация.