两阶段锁

在数据库和事务处理中，两阶段锁 (Two-phase locking，2PL) 是一种保证冲突可串行化的消极并发控制方法。Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems , Addison Wesley Publishing Company, Gerhard Weikum, Gottfried Vossen (2001): Transactional Information Systems , Elsevier, 它也是数据库事务调度 (历史记录) 的结果集的名称。该协议使用事务对数据应用的锁，这可能会阻止 (解释为停止信号) 其他事务在事务生命周期内访问同一数据。

根据两阶段锁（2PL）协议，锁的应用和解除分为两个阶段：

 扩展阶段：在此阶段中，锁被获取，且不释放任何锁。
 收缩阶段：在此阶段中，锁被释放，且不再获取任何锁。

基本协议中使用两种类型的锁：共享锁和独占锁。对基本协议的改进可能会使用更多类型的锁。由于使用了阻塞进程的锁，2PL、S2PL 和 SS2PL 可能会因两个或多个事务的相互阻塞而导致死锁。

参考文献

Category:数据库
Category:事务处理
Category:并发控制