ВУЗ:
Составители:
Рубрика:
52
полнения транзакции В). Тогда заданная транзакцией В блокировка будет снята и
транзакция А может быть выполнена. Причем транзакция А будет иметь дело с некоторым
фиксированным значением (либо существовавшим до выполнения транзакции В при
отмене ее выполнения, либо полученным после выполнения транзакции В). В любом
случае транзакция А больше не зависит от незафиксированного обновления.
Транзакция А Время Транзакция В
-
-
-
-
-
Обновление кортежа р
(задание Х-блокировки
для р)
Ожидание
Ожидание
Ожидание
Ожидание
Итог: обновление
кортежа р
(задание Х-блокировки
для р)
-
|
|
t
1
|
|
t
2
|
|
t
3
|
|
t
4
|
↓
-
-
Обновление кортежа р
(задание Х-блокировки для р)
-
-
-
-
Окончание или отмена
выполнения
(снятие Х-блокировки для р)
Рис. 5.8. Транзакция А предохраняется от выполнения операций с
незафиксированным изменением в момент времени t
2
Проблема несовместимого анализа
На рис. 5.9 приведена измененная версия рис. 5.4 с перечислением чередующихся
транзакций согласно протоколу блокировки из раздела 5.3. Операция обновления для
транзакции В в момент времени t
6
не будет выполнена. Дело в том, что она является
неявным запросом с заданием Х-блокировки для кортежа СЧЕТ 1, а этот запрос вступает в
конфликт с S-блокировкой, уже заданной транзакцией А. Таким образом, транзакция В
переходит в состояние ожидания. Точно так же операция извлечения для транзакции А в
момент времени t
7
не будет выполнена. Дело в том, что она является неявным запросом с
заданием S-блокировки для кортежа СЧЕТ 3, а этот запрос вступает в конфликт с Х-
блокировкой, уже заданной транзакцией В. Таким образом, транзакция А переходит в
состояние ожидания. Следовательно, блокировка хотя и помогает решить одну проблему
(а именно проблему несовместимого анализа), но приводит к необходимости решения
другой проблемы (а именно проблемы возникновения тупиковой ситуации, которая
обсуждается в ниже).
Тупики, их обнаружение и распознавание
Как было показано выше, блокировку можно использовать для разрешения трех
основных проблем, возникающих при параллельной обработке кортежей. К сожалению,
использование блокировок приводит к возникновению другой проблемы - тупиковой
ситуации. Два примера таких ситуаций были приведены выше. На рис. 5.10 показан
обобщенный пример этой проблемы, в котором p
1
и р
2
представляют любые блокируемые
объекты, необязательно кортежи базы данных, а выражения типа “блокировка ... без
взаимного доступа” представляют любые операции с наложением блокировки (без
взаимного доступа), заданные как явно, так и неявно.
полнения транзакции В). Тогда заданная транзакцией В блокировка будет снята и
транзакция А может быть выполнена. Причем транзакция А будет иметь дело с некоторым
фиксированным значением (либо существовавшим до выполнения транзакции В при
отмене ее выполнения, либо полученным после выполнения транзакции В). В любом
случае транзакция А больше не зависит от незафиксированного обновления.
Транзакция А Время Транзакция В
- | -
- | -
- t1 Обновление кортежа р
- | (задание Х-блокировки для р)
- | -
Обновление кортежа р t2 -
(задание Х-блокировки | -
для р) | -
Ожидание t3 Окончание или отмена
Ожидание | выполнения
Ожидание | (снятие Х-блокировки для р)
Ожидание t4
Итог: обновление |
кортежа р ↓
(задание Х-блокировки
для р)
-
Рис. 5.8. Транзакция А предохраняется от выполнения операций с
незафиксированным изменением в момент времени t2
Проблема несовместимого анализа
На рис. 5.9 приведена измененная версия рис. 5.4 с перечислением чередующихся
транзакций согласно протоколу блокировки из раздела 5.3. Операция обновления для
транзакции В в момент времени t6 не будет выполнена. Дело в том, что она является
неявным запросом с заданием Х-блокировки для кортежа СЧЕТ 1, а этот запрос вступает в
конфликт с S-блокировкой, уже заданной транзакцией А. Таким образом, транзакция В
переходит в состояние ожидания. Точно так же операция извлечения для транзакции А в
момент времени t7 не будет выполнена. Дело в том, что она является неявным запросом с
заданием S-блокировки для кортежа СЧЕТ 3, а этот запрос вступает в конфликт с Х-
блокировкой, уже заданной транзакцией В. Таким образом, транзакция А переходит в
состояние ожидания. Следовательно, блокировка хотя и помогает решить одну проблему
(а именно проблему несовместимого анализа), но приводит к необходимости решения
другой проблемы (а именно проблемы возникновения тупиковой ситуации, которая
обсуждается в ниже).
Тупики, их обнаружение и распознавание
Как было показано выше, блокировку можно использовать для разрешения трех
основных проблем, возникающих при параллельной обработке кортежей. К сожалению,
использование блокировок приводит к возникновению другой проблемы - тупиковой
ситуации. Два примера таких ситуаций были приведены выше. На рис. 5.10 показан
обобщенный пример этой проблемы, в котором p1 и р2 представляют любые блокируемые
объекты, необязательно кортежи базы данных, а выражения типа “блокировка ... без
взаимного доступа” представляют любые операции с наложением блокировки (без
взаимного доступа), заданные как явно, так и неявно.
52
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
