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

相关推荐
|华|6 小时前
MySQL主从复制与读写分离
数据库·mysql
_下雨天.6 小时前
MySQL 全量、增量备份与恢复
数据库·mysql
TDengine (老段)6 小时前
TDengine IDMP 工业数据建模 —— 数据情景化
大数据·数据库·人工智能·时序数据库·iot·tdengine·涛思数据
Ujimatsu6 小时前
数据分析相关面试题-SQL部分
数据库·sql·数据分析
Omics Pro6 小时前
端到端单细胞空间组学数据分析
大数据·数据库·人工智能·算法·数据挖掘·数据分析·aigc
羊小蜜.6 小时前
Mysql 02:集合函数(聚合函数)查询全解——COUNT/SUM/AVG/MAX/MIN 实战指南
数据库·mysql·集合函数·聚合函数查询
wangjialelele6 小时前
一文读懂 Redis 持久化与事务
linux·数据库·redis·bootstrap
m0_706653237 小时前
开源键值存储数据库如何实现微秒级响应
数据库
小宇的天下7 小时前
Calibre LVS Circuit Comparison(1)
linux·数据库·lvs
羊小猪~~7 小时前
【QT】-- 模型与视图简介
开发语言·数据库·c++·后端·qt·前端框架·个人开发