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

相关推荐
oddsand116 分钟前
Redis网络模型
java·数据库·redis
皮卡祺q21 分钟前
【redies0-导论】分布式系统的演进-引进redis原因
java·数据库·redis
南极企鹅37 分钟前
事务&@Transactional注解
java·数据库·spring·oracle·mybatis
UrSpecial41 分钟前
Redis与多线程
数据库·redis·缓存
bqq198610261 小时前
MySQL 8与MySQL 5.7的主要区别
数据库·mysql
chushiyunen1 小时前
r树索引、mysql对r树的支持
数据库·mysql
会编程的土豆1 小时前
Redis Sorted Set(有序集合)详解
数据库·redis·bootstrap
Xiacqi11 小时前
Java数据库连接--JDBC--DRUID
数据库·后端
Yushan Bai2 小时前
ORACLE Enterprise Manager Cloud Control 系列测试3-Data Masking
数据库·oracle
罗超驿2 小时前
16.深入理解数据库事务:从转账场景剖析ACID四大特性与回滚(Rollback)机制
数据库·mysql