xclock.cn使用 AI 工具,快人一步

MySQL MVCC 交互演示

📊 Table: user_balance (id=1) 当前系统全局事务ID: 100
事务 A (TRX_ID: 200) 未开始
Read View:
m_ids: []
min_trx_id:
max_trx_id:
事务 B (TRX_ID: 300) 未开始
Read View:
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: 未来的新事务,不可见。
  • trx_id in m_ids: 活跃中的未提交事务,不可见。

交互指南

  1. 点击 BEGIN 开启事务,生成 Read View (RR级别仅首次生成)。
  2. 点击 UPDATE 修改数据,会生成新的 Undo Log 版本节点(黄色未提交)。
  3. 点击 SELECT 执行快照读,系统会根据 Read View 遍历版本链找到可见版本。
  4. 尝试两个事务交替操作,观察“可重复读”效果。
* 为了简化演示,假设 TRX_ID 预分配为 200 和 300。
* 初始数据版本 TRX_ID = 10, 金额 = 1000。