ПОДАЛЬШЕ ОПИС ПРОБЛЕМИ ВІДНОВЛЕННЯ

Якщо застосовується послідовний графік, то очевидно, що окремі транзакції в ньому є відновлюваними, оскільки будь-яка з таких транзакцій в разі необхідності завжди може бути скасована і / або виконана повторно з використанням методів, описаних в попередньому розділі Але далеко не очевидно, чи продовжують транзакції залишатися відновлюваними, якщо для них дозволено виконання з чергуванням операцій Насправді проблема залежності від незафіксованого виконання, описана в розділі 162, може стати причиною порушення восстанавливаемости, як буде показано в даному розділі

На час припустимо, що не застосовується ніякої протокол блокування (як і в розділі 162) і тому, зокрема, що транзакції не повинні ніколи очікувати для

того, щоб придбати блокування Тепер розглянемо рис 1611, який являє собою модифіковану версію рис 162 (відмінність між ними полягає в тому, що тепер транзакція А виконує фіксацію до того, як відбудеться відкат транзакції в)

Проблема тут полягає в наступному: для того щоб можна було виконати запит

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

Рис 1611 Приклад невідновного графіка

Нижче наведено умова достатності того, щоб графік був відновити події [152]

Якщо в транзакції А використовуються будь з оновлень транзакції в, то фіксація А не повинна здійснюватися до завершення роботи в

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

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

Далі розглянемо рис 1612, який являє собою модифіковану версію рис 1611 (відмінності між ними полягають у тому, що в даному випадку в транзакції А не виконується фіксація до завершення транзакції В, але транзакція в звільняє свою блокування кортежу t передчасно) Як показано на рис 1611, для того, щоб виконати запит транзакції в на виконання операції ROLLBACK І повернутися до такої ситуації, як якби в ніколи не виконувалася, необхідно провести також відкат транзакції А, оскільки в ній використовувалося одне з оновлень транзакції В Більш того, може бути здійснений і відкат транзакції А, оскільки А ще не була зафіксована Але майже напевно застосування каскадних відкатів, здійснюваних таким чином, є небажаним зокрема, цілком очевидно, що якщо допускається каскадне розповсюдження відкату однієї транзакції, яке тягне за собою відкат іншої транзакції, то можна бути готовим до того, що доведеться зіткнутися з ланцюжками каскадних відкатів довільної довжини Іншими словами, недолік графіка, показаного на цьому малюнку, полягає в тому, що він не гарантує відсутності каскадних відкотів

Рис 1612 Приклад графіка, який може стати причиною каскадного відкату

Нижче наведено умова достатності того, щоб графік гарантував відсутність каскадних відкатів [152]

Якщо в транзакції А використовуються будь-які оновлення транзакції В, то транзакція А не повинна використовувати ці дані до завершення транзакції В

Строгий протокол двофазної блокування гарантує виконання всіх графіків без каскадних відкотів Саме тому цей протокол використовується в переважній більшості сістем5 Крім того, можна легко переконатися в тому, що графік, що гарантує відсутність каскадних відкатів, повинен також обовязково бути відновити події графіком, в тому сенсі цього терміна, який був визначений вище

5 Фактично строгий протокол двофазної блокування певною мірою є занадто суворим, оскільки на практиці немає необхідності утримувати блокування S до кінця транзакції, за умови, що сама транзакція продовжує залишатися двухфазной

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*