MVCC主要是什么原理?

MVCC指的是多版本并发控制,每次修改数据时,都会生成一个新的版本,而不是直接在原有数据上进行修改。

并且每个事务只能看到在它开始之前已经提交的数据版本。

这样读操作就不会阻塞写操作,写操作也不会阻塞读操作,从而避免加锁带来的性能损耗。


底层实现依赖于Undo Log 和Read View。
每次修改数据前,先将记录拷贝到Undo Log,并且每条记录会包含三个隐藏列,

  • DB_TRX_ID记录修改该行的事务ID
  • DB_ROLL_PTR 指向Undo Log中的前一个版本
  • DB_ROW_ID 唯一标识该行数据(仅无主键时生成)。

每次读取数据时,都会生成一个ReadView,记录了当前活跃事务的ID集合、最小事务ID、最大事务ID等信息,通过与DB_TRX_ID进行对比,判断当前事务是否可以看到该数据版本。

posted @ 2025-05-10 22:02  kuki'  阅读(13)  评论(0)    收藏  举报