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
相关推荐
三毛20043 分钟前
玳瑁的嵌入式日记D33-0908(SQL数据库)
jvm·数据库·sql
叫我龙翔12 分钟前
【MySQL】从零开始了解数据库开发 --- 库的操作
数据库·mysql·数据库开发
没有bug.的程序员23 分钟前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
GottdesKrieges1 小时前
OceanBase容量统计:租户、数据库、表大小
数据库·oceanbase
pan3035074791 小时前
mysql 回表查询(二次查询,如何检查,如何规避)
数据库·mysql
Michaelwubo1 小时前
elasticsearch-7.17.29 集群案例,k8s方式和原始方式
数据库
TDengine (老段)1 小时前
TDengine 选择函数 Last() 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
little_xianzhong2 小时前
关于对逾期提醒的定时任务~改进完善
java·数据库·spring boot·spring·mybatis
Sally璐璐2 小时前
Go正则表达式实战指南
数据库·mysql·golang
小猪咪piggy2 小时前
【JavaEE】(23) 综合练习--博客系统
java·数据库·java-ee