Главная » SQL, Базы данных » ДАЛЬНЕЙШЕЕ ОПИСАНИЕ ТРЕХ ПРОБЛЕМ ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНОЙ РАБОТЫ

0

Теперь мы имеем возможность рассмотреть, каким образом с помощью строгого протокола двухфазной блокировки решаются три проблемы, описанные в разделе 16.2. В этом разделе они снова рассматриваются по очереди.

Проблема потерянного обновления

Рис. 16.6 представляет собой модифицированную версию рис. 16.1. На нем показано, что произойдет при выполнении чередующихся операций данного  рисунка в условиях применения строгого протокола двухфазной блокировки. Выполнение операции UPDATE транзакцией А в момент времени t3 не допускается, поскольку эта операция представляет собой неявный запрос на блокировку X  кортежа t, а такой запрос конфликтует с блокировкой S, которой уже владеет транзакция в, поэтому А переходит в состояние ожидания.

Рис. 16.6. Потеря обновления не определяется, но в момент времени t4 возникает

По аналогичным причинам транзакция в переходит в состояние ожидания в момент времени t4. При таких обстоятельствах обе транзакции не могут выполнять свои  действия, поэтому проблема потери какого-либо обновления не возникает. Итак,  проблема потерянного обновления свелась к другой проблеме! Но, по крайней мере, решена первоначальная проблема. Новая проблема называется взаимоблокировкой, и она рассматривается в разделе 16.5.

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

На рис. 16.7 и 16.8, соответственно, приведены модифицированные версии рис. 16.2 и

16.3. На них показано, что произойдет при выполнении чередующихся операций, показанных на этих рисунках, в условиях применения строгого протокола двухфазной блокировки.

Рис. 16.7. Пример того, что для транзакции А исключена возможность считывать незафиксированное изменение в момент времени t2

Рис. 16.8. Пример того, что для транзакции А исключена возможность обновлять незафиксированное изменение в момент времени t2

В обоих случаях выполнение операций транзакцией А в момент времени t2 (RETRIEVE на рис. 16.7 и UPDATE на рис. 16.8) не допускается, поскольку они представляют собой неявный запрос на блокировку кортежа t, а любой такой запрос конфликтует с блокировкой X, которой уже владеет транзакция в, поэтому А переходит в состояние ожидания. Эта транзакция остается в состоянии ожидания до тех пор, пока в не достигнет своего завершения (в результате выполнения либо оператора COMMIT, либо оператора ROLLBACK). После этого блокировка транзакции в освобождается и транзакция А получает возможность продолжить работу. В этот момент транзакция А обнаруживает уже зафиксированное значение  (либо значение, предшествовавшее выполнению транзакции в, если произошел  ее откат, либо значение, полученное после выполнения транзакции в, в ином случае). Так или иначе, успешное выполнение транзакции А больше не зависит от незафиксированного обновления, поэтому первоначальная проблема решена.

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

На рис. 16.9 приведена модифицированная версия рис. 16.4. На этом рисунке показано, что произойдет при чередующемся выполнении операций данного рисунка в условиях применения строгого протокола двухфазной блокировки.  Выполнение операции UPDATE транзакцией в в момент времени t6 не допускается, поскольку она представляет собой неявный запрос на блокировку X кортежа АСС 1, а такой запрос конфликтует с блокировкой S, которой уже владеет транзакция А, поэтому транзакция в переходит в состояние ожидания. Аналогичным образом, выполнение операции RETRIEVE транзакцией А в момент времени t7 также не допускается, поскольку она представляет собой неявный запрос на блокировку S кортежа АСС 3, а такой запрос конфликтует с блокировкой X, которой уже владеет транзакция в, поэтому транзакция А также переходит в состояние ожидания. Поэтому первоначальная проблема (в данном случае проблема анализа несовместимости) снова решена, но это привело к  возникновению взаимоблокировки. Еще раз отметим, что взаимоблокировка рассматривается в разделе 16.5.

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии