【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

相关推荐
TiAmo zhang4 小时前
什么是SQL Server 2019?
数据库·sqlserver
问道飞鱼5 小时前
【数据库知识】TxSQL 主从数据库同步底层原理深度解析
网络·数据库·半同步复制·txsql
大有数据可视化5 小时前
数字孪生背后的大数据技术:时序数据库为何是关键?
大数据·数据库·人工智能
lang201509286 小时前
揭秘InnoDB磁盘I/O与存储空间管理
数据库·mysql
swaveye90606 小时前
轻量服务器创建mysql,并配置远程连接
服务器·mysql·adb
老华带你飞6 小时前
机电公司管理小程序|基于微信小程序的机电公司管理小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·微信小程序·小程序·机电公司管理小程序
Elastic 中国社区官方博客7 小时前
CI/CD 流水线与 agentic AI:如何创建自我纠正的 monorepos
大数据·运维·数据库·人工智能·搜索引擎·ci/cd·全文检索
野熊佩骑8 小时前
一文读懂Redis之数据持久化
linux·运维·数据库·redis·缓存·中间件·centos
gsfl8 小时前
redis特性和应用场景
数据库·redis·缓存
weixin_511222808 小时前
GameObject 常见类型详解 -- 宝箱(CHEST)
数据库