【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

相关推荐
2601_967019512 小时前
免费SSL与商业SSL证书对比:企业生产环境适用性评估
数据库
小诗懂技术2 小时前
【sqlite3数据库】一站式学会 增删改查 以及数据库c接口编程
数据库·sqlite
风123456789~3 小时前
【架构专栏】第6章 数据库设计基础知识 4/4
数据库·架构
IvorySQL3 小时前
代价比较的变革——PostgreSQL执行计划干预增强深度解析
数据库·postgresql·ffmpeg
SL-staff3 小时前
离散制造企业如何应对频繁插单?智能排产系统带来新思路
大数据·数据库·人工智能·技术教程·智能排产·jvs-aps·排产系统
码云数智-园园3 小时前
Oracle 锁等待、会话阻塞故障复盘:生产事故排查步骤
数据库·oracle
哈__4 小时前
从 MySQL 到在线表格:NocoDB 自托管部署、数据导入与远程访问
数据库·mysql
倔强的石头1065 小时前
高可用与无感扩容——分布式时序数据库选型指南
数据库·分布式·时序数据库
91刘仁德13 小时前
MYSQL 事务原理及使用
android·mysql·adb
wxwx_bscxy32213 小时前
NodeJS 高校学业预警系统10551
mysql·node.js·vue·高校学业预警