数据库十八章-并发控制

并发控制 的两个方法:二段锁协议 和 时间戳协议

二段锁协议

The Two-Phase Locking Protocol
简称2PL

有什么锁

某个事务对某个数据项拥有共享锁(shared lock),则可读
某个事务对某个数据项拥有排他锁(exclusive lock),则可读也可写

多个事务可以同时拥有某个数据项的共享锁
只要某个数据项被锁(无论是共享锁还是排他锁),其他事务再次申请排他锁就必须等
只要某个数据项被排他锁 锁住,其他事务再次申请任何锁都要等

协议有什么用

可以保证调度是冲突可串行化调度

协议是怎么实现功能的

每个事务分为两个阶段

  1. 扩张阶段:可以在这个阶段获取锁
  2. 收缩阶段:可以在这个阶段释放锁
    每个事务一开始默认为扩张阶段,一旦释放了一个锁,就进入了收缩阶段,你就别想再请求获取锁了

时间戳协议

协议有什么用

  1. 可以保证调度是冲突可串行化调度(等价于按照时间戳从小到大的顺序串行执行)
  2. 无死锁

协议是怎么实现功能的

  1. 某个事务想读取某个数据项,该事务的时间戳必须要比该数据项的写时间戳大,符合的话就可以读并且更新该数据项的读时间戳为该事务,否则rollback重新进入系统,被分配一个更大的时间戳才能读
  2. 某个事务想修改某个数据项,该事务的时间戳同时比该数据项的写,读时间戳大,符合的话就可以修改该数据项并且更新该数据项的写时间戳为该事务,否则rollback
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值