Распределенная обработка данных. Найханова Л.В. - 50 стр.

UptoLike

Составители: 

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