Протокол Two-Phase Locking (2PL) управляет доступом к данным в базе данных, обеспечивая их корректность и изоляцию между транзакциями. 2PL работает по следующему алгоритму:

  • Фаза установки блокировок: Транзакция может запрашивать блокировки для данных, которые она намерена использовать (чтение или запись).
  • Фаза снятия блокировок: После начала снятия блокировок транзакция не может запрашивать новые блокировки.

Эти две фазы предотвращают конфликты и обеспечивают согласованное выполнение операций.

Изменение данных (операция записи)

  • Запрашивается блокировка на запись (exclusive lock).
  • Ожидается снятие всех блокировок, установленных до этой транзакции.
  • Данные изменяются.
  • Блокировка снимается.

Чтение данных

  • Запрашивается блокировка на чтение (shared lock).
  • Ожидается снятие всех блокировок на запись, установленных до этой транзакции.
  • Данные считываются.
  • Блокировка снимается.

Важные особенности

  • Блокировка на запись. Она запрещает одновременно читать или изменять данные другим транзакциям.
  • Изоляция транзакций. Согласно теореме 2PL, если все транзакции следуют этому протоколу, они будут изолированы друг от друга. Это значит, что каждая транзакция видит данные в состоянии, согласованном относительно её выполнения.

Преимущества 2PL

  • Сериализуемость транзакций. Обеспечивает корректность выполнения операций.
  • Гарантированная изоляция. Исключаются конфликты между транзакциями.

Недостатки 2PL

  • Ожидание блокировок. Транзакция может быть вынуждена ждать, пока другие транзакции освободят ресурсы.
  • Возможность deadlock. Две или более транзакции могут заблокировать друг друга, ожидая освобождения ресурсов.

Мета информация

Область:: 00 Разработка
Родитель:: Блокировка
Источник::
Автор::
Создана:: 2024-06-20

Дополнительные материалы

Дочерние заметки