两阶段封锁协议封锁
Last updated
Last updated
两阶段封锁协议:所有事务必须分两个阶段对所要存取的数据项加锁和解锁。
对任何数据进行读写操作之前,首先申请并获得对该数据项的封锁
在释放一个封锁之后,事务不再申请和获得任何其他的封锁
可以证明,若并发执行的所有事务都遵循两段封锁协议,则对这些事务的任何并发调度策略都是正确的。事务遵守两阶段封锁协议是可串行化调度的充分条件。遵守两阶段封锁协议的事务可能发生死锁,与防止死锁的一次封锁法不同。
阶段一:加锁阶段
事务在读写一个数据项之前,必须对其加锁;如果该数据项被其他使用者已加上不相容的锁,则必须等待。
阶段二:解锁阶段
事务在释放锁之后,不允许再申请其他锁。