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进行对比,判断当前事务是否可以看到该数据版本。

浙公网安备 33010602011771号