MySQL高级-MVCC-原理分析(RR级别)

文章目录

1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView

而RR 是可重复读,在一个事务中,执行两次相同的select语句,查询到的结果是一样的。

  • 那MySQL是如何做到可重复读的呢? 我们简单分析一下就知道了

我们看到,在RR隔离级别下,只是在事务中第一次快照读时生成ReadView,后续都是复用该ReadView,那么既然ReadView都一样, ReadView的版本链匹配规则也一样, 那么最终快照读返回的结果也是一样的。

2、总结

所以呢,MVCC的实现原理就是通过 InnoDB表的隐藏字段UndoLog 版本链ReadView来实现的。
MVCC + 锁,则实现了事务的隔离性
一致性 则是由 redologundolog 保证。

  1. 原子性:undo log
  2. 一致性:undo log + redo log
  3. 隔离性:锁+MVCC
  4. 持久性:redo log
相关推荐
得不到的更加爱17 分钟前
redis并发、穿透、雪崩
数据库·redis·缓存
年轻的高血压患者20 分钟前
基于Java的水果商品销售网站
java·sql·mysql·servlet·架构·eclipse·idea
jcLee9530 分钟前
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
数据库·nginx·http
Decade07121 小时前
【MySQL】逻辑架构与存储引擎
数据库·sql·mysql·架构
关兮月1 小时前
记录一次MySQL恢复
mysql
biass1 小时前
k8s 部署RuoYi-Vue-Plus之mysql搭建
vue.js·mysql·kubernetes
2401_857439691 小时前
【全面剖析】scikit-learn:Python机器学习的核心模块
大数据·数据库·深度学习
2301_786964362 小时前
Django文档简化版——Django快速入门——创建一个基本的投票应用程序(3)
数据库·python·django·sqlite·html
真果粒wrdms2 小时前
【SQLite3】常用API
linux·服务器·c语言·jvm·数据库·oracle·sqlite