Управління паралельною обробкою
В багатокористувацьких системах з БД одночасно можуть працювати декілька користувачів або прикладних програм. Для збереження цілісності даних і забезпечення безпеки БД в цих умовах застосовуються транзакції, які забезпечують роботу кожного користувача з узгодженим станом БД.
Транзакція −неподільна з точки зору впливу на БДпослідовність операторів маніпулювання даними, яка розглядається СУБД як єдине ціле. Або транзакція успішновиконується, і СУБД фіксує зміни БД, які були зроблені цією транзакцією, у зовнішній пам'яті, або, у разі невдачі, жодна зміна не відображається на стані БД. Транзакція розглядається як логічна одиниця роботи з БД. Для того, щоби використання механізмів обробки транзакцій дозволило забезпечити цілісність даних й ізольованість користувачів, транзакція повинна мати такі властивості: атомарність (Atomicity), узгодженість (Cosistency), ізольованість (Isolation), довготерміновість (Durability). Транзакції, які мають ці властивості називаються ACID-транзакціями. Властивості транзакції означають таке:
· атомарність означає,що транзакція виконується,якєдина операція доступу до БД і виконується або повністю або не виконується зовсім;
· узгодженість гарантує взаємну цілісність даних,тобтовиконання обмежень цілісності БД після завершення роботи транзакції;
· ізольованість означає,що транзакції,які конкурують задоступ до БД, фізично обробляються послідовно, ізольовано одна від одної, але для користувачів це виглядає так, ніби вони виконуються паралельно;
· довготерміновість означає,що коли транзакціявиконана успішно, то всі зміни, які вона зробила в даних, не будуть втрачені ні за яких обставин.
Для обробки паралельних транзакцій застосовується серіалізація транзакцій і метод тимчасових міток.
Серіалізація транзакцій −процедура,яка забезпечуєпідтримку незалежного виконання трансакцій. Це означає, що дія двох паралельно діючих транзакцій буде така сама, як і їх послідовна дія: спочатку перша, а потім друга, або навпаки − спочатку друга, а потім перша. У ході виконання транзакції користувач бачить тільки узгоджені дані і не бачить неузгоджених проміжних даних. Для підтримки паралельної роботи складається спеціальний план.
Для реалізації серіалізації транзакцій застосовується механізм блокувань.Блокування передбачає встановленнярежиму доступу (монопольного або сумісного) до деякого ресурсу даних, що дозволяє виключити доступ до нього одночасно з даною транзакцією інших транзакцій, в результаті якого може бути порушена логічна цілісність даних БД. Об'єктом блокування може бути вся БД, окремі таблиці, сторінки, рядки.
Для підвищення ступеня паралельності доступу декількох користувачів до однієї БД використовуються такі блокування:
· нежорстке блокування або роздільне блокування(Shared − S-блокування); об'єкт блокується для виконання операції читання; об'єкти в цьому випадку не змінюються у ході виконання транзакції і доступні іншим транзакціям також, але тільки в режимі читання;
· жорстке блокування або монопольне(eXclusive−X-блокування); об'єкт блокується для виконання операції запису, модифікації або вилучення. В цьому випадку виконується монопольне блокування об'єкта і об'єкт залишається недоступним іншим транзакціям до моменту завершення роботи даної транзакції.
Застосування різних типів блокувань призводить до тупиків. Тупикова ситуація виникає тоді, коли дві і більш транзакції одночасно знаходяться у стані очікування, причому для продовження роботи кожна з транзакцій очікує завершення роботи іншої транзакції.
Приклад.Нехай транзакція1в момент часу t1 блокуєресурс A, а транзакція 2 в момент часу t2 блокує ресурс B (рис.10.3). В момент часу t3 транзакції 1 потрібен ресурс B і вона очікує його звільнення транзакцією 2. В момент часу t4 транзакції 2 потрібен ресурс A і вона очікує його звільнення транзакцією 1. Транзакція 1 чекає транзакцію 2, транзакція 2 чекає транзакцію 1.
Блокування | Очікування | |||||||
Транзакція 1 | ресурсу A | ресурсу B | ||||||
t1 | t3 | Очікування | ||||||
Блокування | ||||||||
Транзакція 2 | ресурсу B | ресурсу A | ||||||
t2 | t4 |
Рис.10.3. Взаємне блокування транзакцій
Основою визначення тупикових ситуацій є побудова графа очікування транзакцій. Алгоритм виходу із тупика передбачає визначення транзакції-жертви. Після вибору такої транзакції виконується її відкат.
Для серіалізації транзакцій також застосовується двофазне блокування,яке полягає у такому:
· перед виконанням операцій з будь-яким об'єктом транзакція блокує цей об'єкт (накопичення захватів);
· після зняття блокування транзакція не повинна накладувати ніяких інших блокувань (вивільнення захватів).
Дата добавления: 2016-03-22; просмотров: 642;