为什么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里面。

相关推荐
k***19519 小时前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring
程序员黄老师19 小时前
主流向量数据库全面解析
数据库·大模型·向量·rag
Full Stack Developme19 小时前
Redis 可以实现哪些业务功能
数据库·redis·缓存
rgeshfgreh20 小时前
Spring事务传播机制深度解析
java·前端·数据库
无名-CODING20 小时前
Java Spring 事务管理深度指南
java·数据库·spring
想唱rap20 小时前
MYSQL在ubuntu下的安装
linux·数据库·mysql·ubuntu
蕨蕨学AI20 小时前
【Wolfram语言】45.2 真实数据集
java·数据库
The Sheep 202320 小时前
MongoDB与.Net6
数据库·mongodb
BryceBorder20 小时前
SCAU--数据库
数据库·oracle·dba
有味道的男人20 小时前
京东关键词API接口获取
数据库