为什么mvcc中?m_ids 列表并不等同于 min_trx_id 和 max_trx_id 之间的所有事务 ID

首先我们要明确

m_ids

表示创建 ReadView 时,系统中所有活跃(未提交)事务的事务 ID 列表。

仅包含当前未提交的事务,与事务 ID 的数值范围无关。

min_trx_id

是 m_ids 中的最小值。若 m_ids 为空,则 min_trx_id 等于 max_trx_id。
max_trx_id

是系统即将分配给下一个事务的 ID,即当前最大事务 ID + 1。

注意这个当前事务最大ID并不是ID列表的最后一个值,因为当前创建ReadView的时候,有的事务没提交,有的事务提交了

比如(1,3,5,6)没提交,他们就是m_ids。但是(2,4,7)提交了已经,最大ID是7。

所以当我们遇见了在[min_trx_id,max_trx_id)之间的事务,我们得去判断它到底在不在m_ids里面。

相关推荐
JosieBook2 分钟前
【数据库】时序数据库选型指南:从大数据视角看IoTDB的核心优势
大数据·数据库·时序数据库·iotdb
paid槮3 分钟前
MySql 知识大汇总
数据库·mysql
赵渝强老师6 分钟前
【赵渝强老师】OceanBase租户的资源管理
数据库·mysql·oracle·oceanbase
归云鹤10 分钟前
QT 动态属性和静态属性
开发语言·数据库·qt
2025年一定要上岸1 小时前
【Django】-1- 开发项目搭建
数据库·django·sqlite
瀚高PG实验室1 小时前
HighgoDB查询慢SQL和阻塞SQL
数据库·sql·瀚高数据库
I'm a winner1 小时前
LaTeX 表格制作全面指南
数据库
江南时雨1 小时前
MySQL 中的事务隔离级别有哪些?分别解决什么问题?
数据库·mysql
潇凝子潇1 小时前
Redis 存在哪些问题
数据库·redis·缓存