Skip to content

Daily Study

更新: 12/28/2025 字数: 0 字 时长: 0 分钟

Daily Plan

#todo

  • [ ]

mysql事务回顾

MVCC实现

mysql InnoDB存储引擎实现行级并发控制和支持“可重复读”与“读已提交的机制,四大核心要素:

  • 隐藏列:InnoDB 存储引擎会在每一行记录中添加几个重要的隐藏列。
    • DB_TRX_ID (事务 ID)记录最近修改/插入该行的事务 ID(Transaction ID)
    • DB_ROLL_PTR (回滚指针)指向该行记录的上一个版本(也就是 Undo Log 中对应旧版本记录)。通过这个指针,可以串联起一个数据行的所有历史版本,形成一个版本链(Version Chain)
    • DB_ROW_ID (行 ID)如果表中没有定义主键,InnoDB 会自动生成一个隐含的、单调递增的行 ID 作为主键。
  • Undo log:存储了数据行的历史版本
  • Read View:是一个一致性快照,用来判断当前事务应该看到哪个版本的数据
    • m_ids (活跃事务列表): 在生成 Read View 时,当前系统中活跃着(尚未提交)的所有事务 ID 列表。
    • min_trx_id (最小事务 ID): m_ids 列表中最小的事务 ID。
    • max_trx_id (最大事务 ID): 下一个将要分配的事务 ID(即当前已提交的最大事务 ID + 1)
    • creator_trx_id (创建者 ID): 创建这个 Read View 的事务 ID
  • 可见性规则:当一个事务尝试读取一行数据时,InnoDB 会检查该行记录的最新版本(通过 DB_TRX_ID)是否对当前事务可见

菜就多练

本站访客数 人次 本站总访问量