MVCC的思考

MVCC是一个多版本并发控制的概念
了解MVCC之前,得有两个概念,当前读和快照读,当前读像 select lock in share mode (共享锁), select for update; update; insert; delete (排他锁)这些操作都是一种当前读,为什么叫当前读?就是它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁,快照读就是不加锁的读,本质上是去undo日志里去找到此条数据的最新的日志转换成视图来展示。省略了读写之间的锁操作,提高了并发性。在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能
同时还可以解决脏读,幻读,不可重复读等事务隔离问题,但不能解决更新丢失问题。
原理是用字段来记录当前最新可见的数据,例如现在有4个事务,1、3号事务还在活跃状态,4号事务进行了更新操作,2号事务想要快照读数据,操作在4号事务更新操作之后,那么2号事务快照读时,就会先去判断当前最新的undo日志,经过计算得出是4号事务,然后将undo日志转换为视图进行展示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值