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

相关推荐
Lao A(zhou liang)的菜园20 分钟前
高效DBA的日常运维主题沙龙
运维·数据库·dba
迪迦不喝可乐1 小时前
mysql知识点
数据库·mysql
不太可爱的大白1 小时前
MySQL 事务的 ACID 四大特性及其实现原理
数据库·mysql
观测云2 小时前
HikariCP 可观测性最佳实践
数据库
文牧之3 小时前
PostgreSQL的扩展 dblink
运维·数据库·postgresql
趁你还年轻_3 小时前
Redis-旁路缓存策略详解
数据库·redis·缓存
在云上(oncloudai)4 小时前
AWS DocumentDB vs MongoDB:数据库的技术抉择
数据库·mongodb·aws
夕泠爱吃糖4 小时前
MySQL范式和反范式
数据库·mysql
时序数据说5 小时前
时序数据库IoTDB与EdgeX Foundry集成适配服务介绍
大数据·数据库·开源·时序数据库·iotdb
用手手打人6 小时前
SpringBoot(七) --- Redis基础
数据库·redis·缓存