MVCC

Posted by Liao on 2022-09-26

一、定义

MVCC (Multiversion Concurrenct Contiol) 多版本并发控制,通过数据行的多个版本(undo log)管理来实现数据库的并发控制

二、实现原理

隐藏字段、Undo Log版本链、ReadView

隐藏字段

  • trx_id:事务id
  • roll_pointer

Undo Log版本

ReadView

ReadView是事务A在使用MVCC机制进行快照读操作时产生的读视图

数据结构

  • creator_trx_id:创建ReadView事务的id
  • trx_ids: 在生成ReadView时当前系统中活跃的(还没提交)读写事务的的事务id列表
  • max_trx_id:trx_ids列表中的最大值
  • min_trx_id:trx_ids列表中的最小值

SELECT操作时,根据trx_ids、max_trx_id:trx_ids、min_trx_id:trx_ids之间的大小关系判断数据行快照是否可读