Протокол двофазної блокування

Концепція здатності до впорядкування була вперше запропонована Есвараном у вигляді протоколу двофазної блокування.

Протокол двофазної блокування полягає в наступному:

1. Перед виконання будь-яких операцій з деяким об'єктом, транзакція повинна заблокувати цей об'єкт.

2. Після зняття блокування, транзакція не повинна накладати ніяких інших блокувань.

Транзакції, які використовуються в цьому протоколі, не розрізняються за типами і вважаються монопольними (тобто X-locks).

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

Протокол двофазної блокування характеризується двома фазами:

  • 1 фаза - наростання блокувань. Під час цієї фази накладаються блокування, і проводиться робота з заблокованими об'єктами.
  • 2 фаза - зняття блокувань. Під час цієї фази блокування тільки знімаються. Робота з раніше заблокованими даними може тривати.

Робота транзакції за таким протоколом можна представити схемою на малюнку 1:

Протокол двофазної блокування

Малюнок 1 Робота транзакції по протоколу двофазної блокування

На малюнку 2 показаний приклад транзакції, не підпорядкований протоколу двофазної блокування:

Малюнок 2 Транзакція, що не підкоряється протоколу двофазної блокування

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

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

Схожі статті