-
Read view
每个执行的事务都会生成一个read view
InnoDB会为每个事务创建一个数组,保存事务创建时活跃的事务id(已创建但还没提交的事务)
undo log版本链
修改page cache中某条记录,都会把修改前的数据保存到undo log
每行数据都会包含两个隐藏字段:trx_id(最新修改事物的ID)、roll_pointer(指向上一条undo_log)
read view结构
m_ids:mysql中正在执行的还没提交的事务
- min_trx_id:m_ids里的最小值
- max_trx_id:m_ids里的最大值
-
原理
基于undo log,为当前事务生成read view
- 可以读到的版本数据:自己事务更新的;事务创建之前已经提交事务的修改的
不可以读到的版本数据:生成read view时候正在活跃的事务,在之后提交修改的数据;生成read view之后开启事务提交修改的数据
RC & Read view
read view 实现 RC隔离级别
-
RR & Read view
可重复读隔离级别实现
- 一个事务只会在开始的生成一个read view
