两端锁协议

两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段)

    加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。

    解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作

    两段锁协议要求每个事务中,所有的封锁请求先于所有的解锁请求。

例题:

已知事务T1 的封锁序列为:LOCK S(A)…LOCK S(B)…LOCK X(C)

…UNLOCK(B) …UNLOCK (A) …UNLOCK (C)

事务T2 的封锁序列为:LOCK S(A) …UNLOCK (A) …LOCK S(B)

…LOCK X(C) …UNLOCK (C) …UNLOCK (B)

则遵守两段封锁协议的事务是( )。

题解: 事务T1前面都是加锁阶段阶段,后面都是解锁阶段满足要求。

而事务T2又加锁又解锁,不满足要求。

总结:

 增长阶段:事务可以获得锁,但不能释放锁  - 缩减阶段:事务可以释放锁,但不能获得新锁。对于一个事务而言,刚开始事务处于增长阶段,它可以根据需要获得锁;一旦该事务开始释放锁,它就进入了缩减阶段,就不能再发出加锁请求。

值得注意的是:事务的第一个解锁语句unlock被执行的时刻就是该事物缩减阶段的开始。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值