MVCC多版本并发控制

什么是MVCC?

   MVCC是现代数据库常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来不同事务在并发过程中,select操作可以不通过加锁而是通过MVCC机制获取指定的版本历史记录,并通过一些手段保证读取的的记录值符合事务所处的隔离级别,从而解决并发场景下的读写冲突。

MVCC的实现

MVCC的实现依赖于数据库记录中的三个隐式字段,undo log日志,readView

  1. 三个隐式字段
  2. undo log 日志:undo log日志又叫回滚日志,用于记录数据被修改前的信息,在表记录修改前会先把数据拷贝到undo log里,如果出现事务回滚,既可以通过undo log来还原数据。
  3. readView

MVCC实现原理分析

查询一条记录,基于MVCC,是怎样的流程:

  1. 获取事务自己的版本号,即事务ID
  2. 获取ReadView
  3. 查询得到的数据,然后与ReadView中事务的版本号进行比较
  4. 如果不符合ReadView的可见性规则,即就需要undo log中的历史快照
  5. 最后返回符合规则的数据

总结

   INNODB实现MVCC,是通过ReadView +Undo log实现的。undo log保存了历史快照,ReadView可见性规则帮助判断当前版本是否可见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值