CS-Notes 学习笔记
Java 后端 · MySQL

MVCC 的原理是什么?ReadView 怎样判断可见性?

先自己想一想,再看参考要点

参考要点

  • 每行有隐藏列 DB_TRX_ID(最后修改它的事务 ID)和 DB_ROLL_PTR,旧版本通过回滚指针串在 undo log 中,读不加锁
  • ReadView 记录创建时未提交的事务列表、其中的最小 ID 和下一个要分配的 ID:版本的 TRX_ID 是自己或小于最小 ID 时可见,大于等于下一个 ID 时不可见,在两者之间则不在列表中才可见
  • 不可见就沿回滚指针找上一个版本
  • 提交读每次快照读都创建新的 ReadView,可重复读整个事务复用第一次快照读时创建的那个
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。