ВУЗ:
Составители:
Рубрика:
50
Очевидно, что эта матрица является симметричной.
X S -
X N N Y
S N Y Y
Рис. 5.5. Матрица совместимости для X- и S-блокировки
Теперь следует ввести протокол доступа к данным, который на основе введения
только что описанных X- и S-блокировки позволяет избежать возникновения проблем
параллелизма (описанных выше в этой главе).
1. Транзакция, предназначенная для извлечения кортежа, прежде всего должна на-
ложить S-блокировку на этот кортеж.
2. Транзакция, предназначенная для обновления кортежа, прежде всего должна на-
ложить Х-блокировку на этот кортеж. Иначе говоря, если, например, для последо-
вательности действий типа извлечение/обновление для кортежа уже задана S-
блокировка, то ее необходимо заменить Х-блокировкой.
3. Если запрашиваемая блокировка со стороны транзакции В отвергается из-за
конфликта с некоторой другой блокировкой со стороны транзакции А, то
транзакция В переходит в состояние ожидания. Причем транзакция В будет
находиться в состоянии ожидания до тех пор, пока не будет снята блокировка,
заданная транзакцией А. Надо отметить, что в системе обязательно должны быть
предусмотрены способы устранения бесконечно долгого состояния ожидания
транзакции В (это состояние обычно называется зависанием). Самым простым
способом может служить организация обработки запросов на блокировку в
очередности “первым поступил - первым обработан”.
4. Х-блокировки сохраняются вплоть до конца выполнения транзакции (до операции
“завершение выполнения” или “отмена выполнения”). S-блокировки также обыч-
но сохраняются вплоть до этого момента, однако при работе с ними следует
учесть замечания, которые излагаются несколько ниже в этой лекции.
Замечание. Блокировки в транзакциях обычно задаются неявным образом: например,
запрос на “извлечение кортежа” является неявным запросом с S-блокировкой, а
запрос на “обновление кортежа” - неявным запросом с Х-блокировкой
соответствующего кортежа. При этом под термином “обновление” (как и ранее)
подразумеваются помимо самих операций обновления также операции вставки и
удаления. При строгом описании протокола возможны небольшие отличия,
связанные с операциями вставки и удаления, однако здесь они будут опущены.
Решение проблем параллелизма
Проблема потери результатов обновления
На рис. 5.6 приведена измененная версия процесса, показанного на рис. 5.1, с учетом
применения протокола блокировки для чередующихся операций. Операция обновления
для транзакции А в момент времени t
3
не будет выполнена, поскольку она является
неявным запросом с заданием Х-блокировки для кортежа р, а этот запрос вступает в
конфликт с S-блокировкой, уже заданной транзакцией В. Таким образом, транзакция А
переходит в состояние ожидания. По аналогичным причинам транзакция В переходит в
состояние ожидания в момент времени t
4
. Хотя в таком случае результаты любых
обновлений не будут утрачены, решение этой проблемы с помощью блокировки
возможно только при решении другой проблемы. Эта новая проблема называется
тупиком.
Очевидно, что эта матрица является симметричной.
X S -
X N N Y
S N Y Y
Рис. 5.5. Матрица совместимости для X- и S-блокировки
Теперь следует ввести протокол доступа к данным, который на основе введения
только что описанных X- и S-блокировки позволяет избежать возникновения проблем
параллелизма (описанных выше в этой главе).
1. Транзакция, предназначенная для извлечения кортежа, прежде всего должна на-
ложить S-блокировку на этот кортеж.
2. Транзакция, предназначенная для обновления кортежа, прежде всего должна на-
ложить Х-блокировку на этот кортеж. Иначе говоря, если, например, для последо-
вательности действий типа извлечение/обновление для кортежа уже задана S-
блокировка, то ее необходимо заменить Х-блокировкой.
3. Если запрашиваемая блокировка со стороны транзакции В отвергается из-за
конфликта с некоторой другой блокировкой со стороны транзакции А, то
транзакция В переходит в состояние ожидания. Причем транзакция В будет
находиться в состоянии ожидания до тех пор, пока не будет снята блокировка,
заданная транзакцией А. Надо отметить, что в системе обязательно должны быть
предусмотрены способы устранения бесконечно долгого состояния ожидания
транзакции В (это состояние обычно называется зависанием). Самым простым
способом может служить организация обработки запросов на блокировку в
очередности “первым поступил - первым обработан”.
4. Х-блокировки сохраняются вплоть до конца выполнения транзакции (до операции
“завершение выполнения” или “отмена выполнения”). S-блокировки также обыч-
но сохраняются вплоть до этого момента, однако при работе с ними следует
учесть замечания, которые излагаются несколько ниже в этой лекции.
Замечание. Блокировки в транзакциях обычно задаются неявным образом: например,
запрос на “извлечение кортежа” является неявным запросом с S-блокировкой, а
запрос на “обновление кортежа” - неявным запросом с Х-блокировкой
соответствующего кортежа. При этом под термином “обновление” (как и ранее)
подразумеваются помимо самих операций обновления также операции вставки и
удаления. При строгом описании протокола возможны небольшие отличия,
связанные с операциями вставки и удаления, однако здесь они будут опущены.
Решение проблем параллелизма
Проблема потери результатов обновления
На рис. 5.6 приведена измененная версия процесса, показанного на рис. 5.1, с учетом
применения протокола блокировки для чередующихся операций. Операция обновления
для транзакции А в момент времени t3 не будет выполнена, поскольку она является
неявным запросом с заданием Х-блокировки для кортежа р, а этот запрос вступает в
конфликт с S-блокировкой, уже заданной транзакцией В. Таким образом, транзакция А
переходит в состояние ожидания. По аналогичным причинам транзакция В переходит в
состояние ожидания в момент времени t4. Хотя в таком случае результаты любых
обновлений не будут утрачены, решение этой проблемы с помощью блокировки
возможно только при решении другой проблемы. Эта новая проблема называется
тупиком.
50
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »
