【MySQL】Read view存储的机制,记录可见分析

read view核心组成

1.1 事务id相关

  • creator_trx_id: 创建该read view的事务id

每开启一个事务都会生成一个 ReadView,而 creator_trx_id 就是这个开启的事务的 id。

  • m_ids: 创建read view时系统的活跃事务(未提交的事务)id集合

当前有哪些事务正在执行且还没有提交,这些事务的id就存在这里

  • min_trx_id: 创建read view时系统中最早的活跃事务id

指的是创建的活跃事务id集合里最小的事务id,即最早加入的活跃事务id

  • max_trx_id: 创建read view时系统将分配给下一个事务的id

指的是下一个要生成的事务id,下一个要生成的肯定比所有id都要大

1.2 版本链指针

  • 指向当前数据行的版本链,用于遍历不同版本数据

read view工作原理

1.1 可见性判断

  • 行的事务id < 最小的活跃事务集合id:该版本已经提交,可见。
  • 行的事务id > 最大的活跃事务集合id:该版本由将来事务创建,不可见。
  • 最小的活跃事务集合id <= 行事务id < 最大的活跃事务集合id:
    • 如果行事务id在活跃事务id集合中:事务还没有提交,不可见。
    • 如果行事务id已经不在活跃事务id集合中:事务已经提交,可见。
  • 如果行事务id = 创建时生成的事务id:证明时当前事务对自己的修改,可见。

总结:当事务id在活跃事务id集合,或者大于活跃事务id集合中最大的活跃事务id时,这个版本不可见。


https://github.com/0voice

相关推荐
冉冰学姐4 分钟前
SSM考试管理z2zvx(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·学生信息管理
友友马8 分钟前
『 QT 』信号-槽 补充: Qt信号槽断开连接与Lambda槽技巧
开发语言·数据库·qt
凡间客37 分钟前
5、Python3编程之面向对象
java·服务器·数据库
涛思数据(TDengine)38 分钟前
TDengine TSDB 3.3.8.0 上线:SMA、TLS、TDgpt、taosX、taosgen 一次全进化
大数据·数据库·时序数据库·tdengine
滴_咕噜咕噜1 小时前
【MFC】数据库操作:数据库动态生成
数据库·c++·mfc
YaoYuan93232 小时前
Ubuntu22.04 中搭建基于 Qemu 的内核(驱动)开发环境
数据库
hans汉斯2 小时前
【计算机科学与应用】基于多光谱成像与边缘计算的物流安全风险预警模式及系统实现
大数据·数据库·人工智能·设计模式·机器人·边缘计算·论文笔记
叫我龙翔2 小时前
【MySQL】从零开始了解数据库开发 --- 如何理解事务隔离性
数据库·mysql·数据库开发
你想考研啊2 小时前
一、redis安装(单机)和使用
前端·数据库·redis
枫叶丹42 小时前
【Qt开发】多元素类控件(三)-> QTreeWidget
开发语言·数据库·c++·qt