MVCC多版本并发控制

隐藏字段

DB_TRX_ID

最近修的事务id,记录创建这条记录或最新一次记录的事务id

DB_ROLL_PTR(存储的是内存地址)

回滚指针,指向这条记录的上个版本,用于配合undolog,回滚到上一个版本

DB_ROW_ID

隐藏的主键,如果没有主键则innodb会自动创建一个tow_id

ReadView(快照读)才会使用mvcc

最普通不加锁的select查询

数据结构

m_ids:当前活跃的事务编号集合
min_trx_id:最小的活跃事务编号
max_trx_id:最大的活跃事务编号
creator_trx_id:readview创建者的事务编号

RC(读已提交):每次查询会生成新的ReadView

01.png)

02.png)

RR(可重复读)仅在第一个查询时候创建ReadView,后续快照读复用

两次快照读之前存在当前读,在会重新生成ReadView,会导致幻读

当前读

加锁的select查询