三分钟图解 MVCC,看一遍就懂,快点来学吧

本文深入解析MVCC机制,通过undo log版本链和ReadView,阐述如何保证事务隔离性。详细解释了ReadView的组成及其在判断可见性中的作用,并通过实例展示了事务如何读取不同版本的数据。
摘要由CSDN通过智能技术生成

接着,id = 300 的事务 C 再次修改了这条行记录,把 age 从 20 修改成了 30,如下图:

图片

可以看到,每次修改行记录都会更新 trx_id 和 roll_pointer 这两个隐藏字段,之前的多个数据快照对应的 undo log 会通过 roll_pointer 指针串联起来,从而形成一个版本链。

需要注意的是,select 查询操作不会生成 undo log!在 InnoDB 存储引擎中,undo log 只分为两种:

  • insert undo log:在 insert 操作中产生的 undo log

  • update undo log:对 delete 和 update 操作产生的 undo log

事实上,由于事务隔离性的要求,insert 操作的记录,只对事务本身可见,对其他事务不可见,也即插入操作不会对已经存在的记录产生影响!,所以也就不存在并发情况下的问题。所以,也就是说,MVCC 这个机制,其实就是靠 update undo log 实现的,和 insert undo log 基本上没啥关系,我们上面说的 undo log 版本链上的其实就是 update undo log。

ReadView 机制


说到 MVCC,说到 undo log 版本链,如果你自己不往下说的话,八九不离十面试官都会问你下 ReadView 这个机制。

咱也不卖官

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值