关于MVCC和间隙锁的学习记录及总结

-写在之前:本文参考了Cyc2018大佬的CS-NOTES 中的关于MVCC的部分,仅仅做一个学习记录,也算是巩固这块的学习

MVCC多版本并发控制

什么是MVCC?MVCC(Multi-Version Concurrency Control, MVCC)翻译过来就是多版本并发控制

MVCC用来在可重复读隔离级别下解决幻读这个问题,先看两个东西

版本号

  • 系统版本号
    是一个递增的字段,每开启一个新的事务,系统版本号会递增
  • 事务版本号
    事务开始时的系统版本号

    隐藏的列

    在每行数据后面都有两列隐藏的列
  • 创建版本号
    一个数据行创建时的系统版本号
  • 删除版本号
    如果该快照的删除版本号大于当前事务的版本号,证明该快照有效,否则表示该快照已经被删除了。

    Undo日志

    通过回滚指针把一个数据行的所有快照记录连接起来