两段锁协议(Two-Phase Locking――2PL)
两段锁协议规定所有的事务应遵守的规则:
① 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
② 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
即事务的执行分为两个阶段:
第一阶段是获得封锁的阶段,称为扩展阶段。
第二阶段是释放封锁的阶段,称为收缩阶段。
定理:若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的。
对于遵守两段协议的事务,其交叉并发操作的执行结果一定是正确的。值得注意的是,上述定理是充分条件,不是必要条件。一个可串行化的并发调度的所有事务并不一定都符合两段锁协议,存在不全是2PL的事务的可串行化的并发调度。
同时我们必须指出,遵循两段锁协议的事务有可能发生死锁。

此时事务T1 、T2同时处于扩展阶段,两个事务都坚持请求加锁对方已经占有的数据,导致死锁。
为此,又有了一次封锁法。一次封锁法要求事务必须一次性将所有要使用的数据全部加锁,否则就不能继续执行。因此,一次封锁法遵守两段锁协议,但两段锁并不要求事务必须一次性将所有要使用的数据全部加锁,这一点与一次性封锁不同,这就是遵守两段锁协议仍可能发生死锁的原因所在。
2021-06-13
在牛客打卡9天,今天学习:刷题 10 道
全部评论

相关推荐

09-16 14:43
已编辑
江娱互动_研发_客户端开发
背景 双一流本硕 双非大圆满 只找游戏开发相关的岗位。 8 月初开始秋招到现在 投了四五十家吧, 目前两 offer, 不打算继续投了,把剩下的流程走完就开始沉淀了。目前两 offer 一个是网易互娱测开 base 广州,一个是江娱互动客户端开发 base 北京。应该确定网易这个了,说实话北京这个我挺想去的,这家的产品和工作氛围我了解了也不错,是那种踏实做事的,可惜我是广东人。网易的测开是调剂的二志愿,看了下有内部转岗机会,所以打算后面找个时间提前实习,沉淀下再做一个 demo 作品,写一些 shader,增强下图形学渲染的能力,再学点编辑器开发。看到时候内部转岗或者春招继续投客户端开发这样。后面还能再动摇的话应该就灵犀或者腾子了吧(假如这两家确认的是客户端开发岗的话)。-----------------------补下timeline网易互娱 测开 8.2笔试  8.21 技术面  8.29 leader&HRBP面(终面) 9.8 录用审核(之前一直显示面试中)9.14 oc江娱互动 客户端开发 8.29主程面 9.3 制作人面 9.5 BOSS面 9.11 口头OC 9.15 正式offer后面考虑了一下  感觉还是能走开发就开发吧,测开不太感兴趣,要内部活水转岗还要满1年才能申请。。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务