Введение
Метод управления конкурентным доступом
управление конкурентным доступом
В базах данных и обработке транзакций двухфазная блокировка (2PL) является пессимистическим методом управления конкурентным доступом, гарантирующим серийную восстановимость. Это также название результирующего набора планов (историй) транзакций базы данных. Протокол использует блокировки, применяемые транзакцией к данным, которые могут блокировать другие транзакции от доступа к тем же данным на протяжении всего времени жизни транзакции. Согласно протоколу 2PL, блокировки применяются и снимаются в два этапа:
Фаза расширения: блокировки устанавливаются, но не снимаются. Фаза сжатия: блокировки снимаются, но не устанавливаются. Базовый протокол использует два типа блокировок: разделяемые и исключительные. Усовершенствованные версии базового протокола могут использовать больше типов блокировок. Использование блокировок, препятствующих выполнению процессов, может приводить к взаимоблокировкам (дедлокам) в 2PL, S2PL и SS2PL, возникающим из-за взаимной блокировки двух или более транзакций.
concurrency control
In databases and transaction processing, two phase locking (2PL) is a pessimistic concurrency control method that guarantees conflict serializability. It is also the name of the resulting set of database transaction schedules (histories). The protocol uses locks, applied by a transaction to data, which may block (interpreted as signals to stop) other transactions from accessing the same data during the transaction's life. By the 2PL protocol, locks are applied and removed in two phases:
Expanding phase: locks are acquired and no locks are released. Shrinking phase: locks are released and no locks are acquired. Two types of locks are used by the basic protocol: Shared and Exclusive locks. Refinements of the basic protocol may use more lock types. Using locks that block processes, 2PL, S2PL, and SS2PL may be subject to deadlocks that result from the mutual blocking of two or more transactions.
Консервативная двухфазная блокировка
Разница между 2PL и C2PL заключается в том, что транзакции C2PL получают все необходимые блокировки перед началом выполнения. Это гарантирует, что транзакция, уже удерживающая некоторые блокировки, не будет заблокирована в ожидании других. Консервативный 2PL предотвращает взаимоблокировки.
Строгая двухфазная блокировка
Для соблюдения строгого протокола двухфазного блокирования (S2PL) транзакция должна соответствовать протоколу 2PL и освобождать свои блокировки на запись (исключительные) только после завершения транзакции, то есть после ее фиксации или отката. С другой стороны, блокировки на чтение (общие) регулярно освобождаются в процессе фазы сжатия. В отличие от 2PL, S2PL обеспечивает строгость (частный случай каскадного восстановления без потерь). Этот протокол не подходит для B-деревьев, поскольку приводит к возникновению узкого места (в то время как поиск в B-деревьях всегда начинается с корневого узла).