跳转到内容

两阶段锁

维基百科,自由的百科全书

数据库事务处理中,两阶段锁 (Two-phase locking,2PL) 是一种保证冲突可串行化的悲观并发控制方法。[1][2]它也是数据库事务调度 (历史记录) 的结果集的名称。该协议使用事务对数据应用的,这可能会阻止 (解释为停止信号) 其他事务在事务生命周期内访问同一数据。

根据两阶段锁(2PL)协议,锁的应用和解除分为两个阶段:

  1. 扩展阶段:在此阶段中,锁被获取,且不释放任何锁。
  2. 收缩阶段:在此阶段中,锁被释放,且不再获取任何锁。

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

参考文献

[编辑]
  1. ^ Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems页面存档备份,存于互联网档案馆), Addison Wesley Publishing Company, ISBN 0-201-10715-5
  2. ^ Gerhard Weikum, Gottfried Vossen (2001): Transactional Information Systems页面存档备份,存于互联网档案馆), Elsevier, ISBN 1-55860-508-8