简识MySQL中ReadView、RC、RR的关系

一、背景

在MySQL中,ReadView是事务进行快照读操作时生成的读视图,它用于确定哪些数据对当前事务是可见的。ReadView的生成和属性受MySQL事务隔离级别的影响,特别是RC(Read Committed,读已提交)和RR(Repeatable Read,可重复读)这两个级别。

二、详解

对于ReadView中哪个属性是由MySQL的事务隔离级别RC、RR设置来起作用的,可以明确的是:ReadView的生成时机和更新策略是由事务隔离级别RC和RR来决定的。具体来说:

在RC隔离级别下

  • 每个快照读操作都会生成并获取最新的ReadView。这意味着,在同一个事务中,如果执行了多次快照读操作,那么每次操作都会看到一个可能不同的数据快照,因为每次都会根据当前活跃的事务ID列表来生成新的ReadView。

在RR隔离级别下

  • 同一个事务中的第一个快照读会创建ReadView,之后的快照读获取的都是同一个ReadView。这意味着,在同一个事务中,无论执行多少次快照读操作,它们都会看到一个相同的数据快照,因为ReadView在事务开始后只生成一次,并且不会随着事务的进行而更新。

因此,虽然ReadView本身包含多个属性(如trx_list、up_limit_id、low_limit_id等),但这些属性的值是由事务的快照读操作在生成ReadView时根据当前系统状态确定的。而ReadView的生成时机和更新策略,则是由MySQL的事务隔离级别RC和RR来控制的。

总的来说,事务隔离级别RC和RR通过影响ReadView的生成时机和更新策略,从而决定了事务在执行快照读操作时能够看到的数据快照。

(望各位潘安、各位子健不吝赐教!多多指正!🙏)

相关推荐
_qingche44 分钟前
H2 数据库到 MySQL 数据迁移
java·数据库·spring boot·mysql·spring·重构·kotlin
AOwhisky1 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算
数据库小学妹1 小时前
MySQL ORDER BY 深度解析:Using temporary 与 Using filesort 的底层机制及索引优化实战
数据库·经验分享·mysql·性能优化·dba
可乐ea1 小时前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
WPF工业上位机2 小时前
YXGK.FakeVM数据库示例
jvm·数据库·oracle
牛奔2 小时前
如何让 GORM 打印 SQL 语句?三种方式全解析
数据库·sql
XWalnut2 小时前
Redis从入门到精通
数据库·redis·缓存
andafaAPS2 小时前
安达发|工艺品aps自动排产排程排单软件:告别生产“一团乱麻“
大数据·数据库·人工智能·安达发aps·计划排产软件·自动排单软件
zt1985q3 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理