一、定义
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之间的大小关系判断数据行快照是否可读