返回大厅
MySQL MVCC 交互演示
📊 Table: user_balance (id=1)
当前系统全局事务ID: 100
事务 A (TRX_ID: 200)
未开始
Read View:
m_ids: []
min_trx_id:
max_trx_id:
m_ids: []
min_trx_id:
max_trx_id:
事务 B (TRX_ID: 300)
未开始
Read View:
m_ids: []
min_trx_id:
max_trx_id:
m_ids: []
min_trx_id:
max_trx_id:
System 数据库初始化完成。默认隔离级别:RR (可重复读)
MVCC 核心机制
MySQL InnoDB 引擎通过 Undo Log 版本链 和 Read View 实现多版本并发控制。
版本可见性规则
- trx_id == creator_id: 自己修改的,可见。
- trx_id < min_trx_id: 已提交的旧事务,可见。
- trx_id > max_trx_id: 未来的新事务,不可见。
- min <= trx_id <= max:
- 若在 m_ids 中:活跃未提交,不可见。
- 若不在 m_ids 中:已提交,可见。
交互指南
此场景演示:事务A开启后,事务B(200)活跃,事务C(300)提交。事务A读取时,能否看到已提交的C?(trx_id 在 min和max之间但不在m_ids)
* 初始数据版本 TRX_ID = 10, 金额 = 1000。