Подальший опис ТРЬОХ ПРОБЛЕМ ОРГАНІЗАЦІЇ паралельної роботи

Тепер ми маємо можливість розглянути, яким чином за допомогою суворого протоколу двофазної блокування вирішуються три проблеми, описані в розділі 162 У цьому розділі вони знову розглядаються по черзі

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

Рис 166 являє собою модифіковану версію рис 161 На ньому показано, що відбудеться при виконанні чергуються операцій даного малюнка в умовах застосування суворого протоколу двофазної блокування Виконання операції UPDATE транзакцією А в момент часу t3 не допускається, оскільки ця операція являє собою неявний запит на блокування X кортежу t, а такий запит конфліктує з блокуванням S, якій вже володіє транзакція в, тому А переходить в стан очікування

Рис 166 Втрата поновлення не визначається, але в момент часу t4 виникає

З аналогічних причин транзакція в переходить в стан очікування в момент часу t4 За таких обставин обидві транзакції не можуть виконувати свої дії, тому проблема втрати будь-якого поновлення не виникає Отже, проблема втраченого поновлення звелася до іншої проблеми Але, принаймні, вирішена первісна проблема Нова проблема називається взаімоблокіровке, і вона розглядається в розділі 165

Проблема залежності від незафіксованого поновлення

На рис 167 і 168, відповідно, приведені модифіковані версії рис 162 і

163 На них показано, що відбудеться при виконанні чергуються операцій, показаних на цих малюнках, в умовах застосування суворого протоколу двофазної блокування

Рис 167 Приклад того, що для транзакції А виключена можливість зчитувати незафіксоване зміна в момент часу t2

Рис 168 Приклад того, що для транзакції А виключена можливість оновлювати незафіксоване зміна в момент часу t2

В обох випадках виконання операцій транзакцією А в момент часу t2 (RETRIEVE на рис 167 і UPDATE на рис 168) не допускається, оскільки вони являють собою неявний запит на блокування кортежу t, а будь-який такий запит конфліктує з блокуванням X, якій вже володіє транзакція в, тому А переходить в стан очікування Ця транзакція залишається в стані очікування до тих пір, поки в не досягне свого завершення (в результаті виконання або оператора COMMIT, або оператора ROLLBACK) Після цього блокування транзакції в звільняється і транзакція А отримує можливість продовжити роботу У цей момент транзакція А виявляє вже зафіксоване значення (або значення, яке передувало виконання транзакції в, якщо стався її відкат, або значення, отримане після виконання транзакції в, в іншому випадку) Так чи інакше, успішне виконання транзакції А більше не залежить від незафіксованого оновлення, тому первісна проблема вирішена

Проблема аналізу несумісності

На рис 169 наведена модифікована версія рис 164 На цьому малюнку показано, що відбудеться при чергується виконанні операцій даного малюнка в умовах застосування суворого протоколу двофазної блокування Виконання операції UPDATE транзакцією в в момент часу t6 не допускається, оскільки вона являє собою неявний запит на блокування X кортежу АСС 1, а такий запит конфліктує з блокуванням S, якій вже володіє транзакція А, тому транзакція в переходить в стан очікування Аналогічним чином, виконання операції RETRIEVE транзакцією А в момент часу t7 також не допускається, оскільки вона являє собою неявний запит на блокування S кортежу АСС 3, а такий запит конфліктує з блокуванням X, якій вже володіє транзакція в, тому транзакція А також переходить в стан очікування Тому первісна проблема (в даному випадку проблема аналізу несумісності) знову вирішена, але це призвело до виникнення взаимоблокировки Ще раз відзначимо, що взаімоблокіровка розглядається в розділі 165

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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*