InnoDB存储引擎——MVCC(多版本并发控制)介绍

1.MVCC多版本并发控制基本概念

快照读、当前读、MVCC的介绍。
在这里插入图片描述

快照读,select不加锁,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。

快照读演示:
在这里插入图片描述
当前读就是读取到最新的版本记录,读取时还要保证其他事务不能修改当前记录,会对读取的记录进行加锁。

当前读演示:
在这里插入图片描述

2.MVCC实现原理

2.1 innodb引擎的表结构中的三个隐藏字段

在innodb引擎的表结构当中存在三个或两个隐藏字段,有没有DB_ROW_ID取决于表有没有指定主键。
在这里插入图片描述
如何查看隐藏字段?可直接从表结构中查看。

cd /var/lib/mysql
cd itcast/

下面的ibd文件都是独立表空间文件
在这里插入图片描述

ibd2sdi stu.ibd

在这里插入图片描述
在这里插入图片描述

2.2 innodb引擎的undo log日志

在这里插入图片描述
undo log 版本链

每次修改操作完成后,会在undo log日志中留下一条记录。当有一连串的事务进行操作时,在undo log日志当中就会生成一条记录版本的版本链。
在这里插入图片描述
当我们查询的时候,具体要返回哪一个版本呢??

2.3 innodb引擎的readview

在这里插入图片描述
版本数据链访问规则:
在这里插入图片描述
RC读已提交的隔离情况下,在进行快照读的时候,MVCC在数据读取的时候具体的底层原理:
在这里插入图片描述
RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView。(可重复读)
在这里插入图片描述

2.4 MVCC实现原理小结

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值