两段锁协议规定所有的事务应遵守的准则:
- 在对任何数据进行读、写操作之前,首先要获得该数据的锁。
- 在释放一个锁之后,事务不再获取其它任何封锁。
因此把事务的执行分为两个阶段:
- 第一阶段是获得锁的阶段,称为加锁节点,或者扩展阶段。对任何数据进行读操作之前要获得S锁,在进行写操作之前要获得X锁;如加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。
- 第二阶段是释放锁的阶段,称为解锁阶段,或者收缩阶段。当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。
结论:
- 对于遵循两段锁协议的事务,他们的任何调度都是可串行化的。