两阶段锁协议 (2PL) 是指每个事务 Ti 都必须在释放其持有的 任何 锁之前,已经获得了其所需的 所有 锁 [36]。

这意味着事务的加锁过程分为两个阶段:

  • 增长阶段(Growing phase),事务只获得锁,不释放锁;
  • 收缩阶段(Shrinking phase),事务只释放锁,不获得锁 [37]。

一旦事务进入收缩阶段,就不能再进入增长阶段。