两阶段锁:我已经修改的不允许别惹修改,我准备修改的我会争取修改。
两阶段锁:慢性贪婪锁算法;可能发生死锁;
一次封锁法:急性贪婪锁算法:不可能发生死锁。
两段锁协议和防止死锁的一次封锁法的异同之处。
一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;
但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。
可以证明,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。
需要说明的是,事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。也就是说,若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的;若对并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议。
两阶段封锁协议实现了事务集的串行化调度,但同时,一个事务的失败可能会引起一连串事务的回滚。为避免这种情况的发生,我们需要进一步加强对两阶段封锁协议的控制,这就是:严格两阶段封锁协议和强两阶段封锁协议。
http://qingtian886.blog.sohu.com/162663696.html
原文:https://www.cnblogs.com/feng9exe/p/12162488.html