Введение

Метод управления конкурентным доступом
управление конкурентным доступом
В базах данных и обработке транзакций двухфазная блокировка (2PL) является пессимистическим методом управления конкурентным доступом, гарантирующим серийную восстановимость. Это также название результирующего набора планов (историй) транзакций базы данных. Протокол использует блокировки, применяемые транзакцией к данным, которые могут блокировать другие транзакции от доступа к тем же данным на протяжении всего времени жизни транзакции. Согласно протоколу 2PL, блокировки применяются и снимаются в два этапа:
Фаза расширения: блокировки устанавливаются, но не снимаются. Фаза сжатия: блокировки снимаются, но не устанавливаются. Базовый протокол использует два типа блокировок: разделяемые и исключительные. Усовершенствованные версии базового протокола могут использовать больше типов блокировок. Использование блокировок, препятствующих выполнению процессов, может приводить к взаимоблокировкам (дедлокам) в 2PL, S2PL и SS2PL, возникающим из-за взаимной блокировки двух или более транзакций.

Консервативная двухфазная блокировка

Разница между 2PL и C2PL заключается в том, что транзакции C2PL получают все необходимые блокировки перед началом выполнения. Это гарантирует, что транзакция, уже удерживающая некоторые блокировки, не будет заблокирована в ожидании других. Консервативный 2PL предотвращает взаимоблокировки.

Строгая двухфазная блокировка

Для соблюдения строгого протокола двухфазного блокирования (S2PL) транзакция должна соответствовать протоколу 2PL и освобождать свои блокировки на запись (исключительные) только после завершения транзакции, то есть после ее фиксации или отката. С другой стороны, блокировки на чтение (общие) регулярно освобождаются в процессе фазы сжатия. В отличие от 2PL, S2PL обеспечивает строгость (частный случай каскадного восстановления без потерь). Этот протокол не подходит для B-деревьев, поскольку приводит к возникновению узкого места (в то время как поиск в B-деревьях всегда начинается с корневого узла).