【mysql 】 mvcc(多版本并发控制)原理的理解

前言:

大家都知道mysql有四大特性,原子性,一致性,隔离性,持久性,其中隔离性又有四个级别,分别是读未提交,读已提交(RC),可重复读(RR),串行化,然后mysql 的隔离性是如何解决掉的呢,带着疑问,大家一起来找答案。

1、什么是MVCC

在mysql InnoDB 存储引擎下,RC、RR是基于MVCC进行并发事务控制的,MVCC 是基于“数据版本”对并发事务进行访问。

2、实例展现

在这里插入图片描述
RR(可重复读):Select1=张三 Select2=张三
RC(读已提交):Select1=张三 Select2=张小三 可见RC出现了不可重复读

那么RR是怎么保证可重复读的呢,下面说。

3、MVCC基于UNDO_LOG(回滚日志) 版本链

undo_log 版本链的数据不在引用后才会被删除,不用担心数据丢失问题
以上四个事务会有如下的版本链,通过链的方式保存数据的版本变化
在这里插入图片描述
可以看到多出两个字段:TRX_ID(事务ID) 和DB_ROLL_PTR(指针,指向上一个版本变化的数据)

4、ReadView

4.1 什么是快照读 什么是当前读

快照读就是最普通的Select查询sql语句
<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值