Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekcii_OBD.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.87 Mб
Скачать

12.4. Впорядкованість і відновлюваність.

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

Послідовний графік запобігає виникненню проблем, але виключає паралельність, що протирічить призначенню багатокористувацьких СУБД, де має забезпечуватись максимальна ступінь паралельності виконання транзакцій.

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

Розрізняють впорядкований та відновлюваний непослідовні графіки:

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

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

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

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

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

Відновлюваний графік – це графік, у якому для кожної пари транзакцій Тi і Tj виконується наступне правило: якщо транзакція Тj зчитує елемент даних, попередньо записаний транзакцією Тi, то фіксація результатів транзакції Тi повинна виконуватися до фіксації результатів транзакції Тj.

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

12.5 Методи керування паралельністю.

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

Впорядкованість може бути досягнута декількома різними способами. Існує два основних методи керування паралельністю, що дозволяють організувати одночасне безпечне виконання транзакцій при дотриманні певних обмежень: метод блокування і метод часових міток.

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

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

Блокування – це процедура, використовувана для керування паралельним доступом до даних. Коли деяка транзакція одержує доступ до бази даних, механізм блокування дозволяє (з метою виключення одержання некоректних результатів) відхилити спроби одержання доступу до цих же даних з боку інших транзакцій.

Саме методи блокування найчастіше використовуються на практиці для забезпечення упорядкованості паралельно виконуваних транзакцій. Існує кілька різних варіантів цього механізму, однак усі вони побудовані на одному фундаментальному принципі: транзакція повинна виконати блокування для читання (поділювану) або для запису (ексклюзивну) частину деякого елемента даних перед тим, як вона зможе виконати в базі даних відповідну операцію читання або запису.

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

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

Інший підхід складається в організації списку заблокованих елементів бази. Існують і інші методи реалізації даного механізму. Основні правила методу блокування:

  • якщо транзакція встановила блокування елемента даних для читання, воно зможе читати його, але не зможе оновити.

  • якщо транзакція встановила блокування елемента даних для запису, вона може як читати, так і оновляти цей елемент.

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

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

Порядок блокування:

  • будь-яка транзакція, якій необхідно одержати доступ до елемента даних, повинна спочатку виконати блокування цього об'єкта;

  • якщо елемент ще не заблокований іншою транзакцією, блокування елемента буде виконано успішно;

  • якщо елемент даних у даний момент уже заблокований, СУБД проаналізує, чи є тип отриманого запиту сумісним з типом вже існуючого блоку. Якщо вимагається доступ для читання елемента, що заблокований для читання, доступ до елемента даних буде дозволено інакше транзакція буде переведена в стан очікування, що буде продовжуватися поки існуючий блок не буде знятий;

  • транзакція продовжує утримувати елемент даних заблокованим доти, поки вона явно не звільнить його в ході виконання транзакції, або по її закінченні шляхом підтвердження або відкату. Тільки після того як з елемента даних буде знято блокування для запису, інші транзакції зможуть "побачити" результати проведеної операції запису.

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

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

По цій же причині в деяких системах транзакціям дозволяється встановлювати блокування елемента даних для запису, з наступним звуженням її до рівня блокування для читання.

Використання в транзакціях блокувань саме по собі не гарантує упорядкованості одержуваних графіків.

Для забезпечення упорядкованості необхідно скористатися додатковим протоколом, що визначає моменти встановлення і зняття блокування для кожної з транзакцій. Найвідомішим з таких протоколів є метод 2-фазного блокування (2PL) – ним запроваджується правило, згідно якого всі операції блокування повинні передувати першій операції розблокування.

Відповідно, кожна транзакція може бути розділена на дві фази:

-фазу наростання, у якій виконуються всі необхідні блокування і не звільняється жодного з елементів даних;

-фазу стискування, у якій знімаються усі, виконані раніше, блокування елементів даних.

Засоби підтримки підсистеми транзакцій

З а виконання транзакцій відповідає Менеджер транзакцій. Він здійснює координацію роботи транзакцій, виконуваних прикладними програмами. Він взаємодіє з планувальником, що відповідає за реалізацію обраної стратегії керування паралельністю. Інколи його називають менеджером блокування, якщо використовуваний протокол керування паралельністю будується на основі системи блокування. Метою планувальника є досягнення максимально можливого рівня паралельності, за умови виключення впливу одної на одну паралельно виконуваних транзакцій , оскільки це може послужити джерелом порушення погодженості бази даних.

Задачею менеджера відновлення є надання гарантій того, що у випадку невдачі база даних буде автоматично повернута до погодженого (несуперечливого) стану.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]