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

UptoLike

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

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