首先科普下读视图read-view:
-
可重复读级别,在首次快照读时生成读视图
-
读已提交级别,在每次快照读时生成读视图
首先看下图:描述的是这个记录是否能被当前的事务版本的查询场景能看到。
- DB_TRX_ID:记录创建这条记录,最后一次修改该记录事务ID
- UP_ID: 当前活跃的最小事务id
- LOW-LIMIT-ID:下一个即将要分配的事务id。
针对上图举例子:
场景:
有四个事务:A1、A2、A3、A4
- 1、事务A1、A2、A3、A4 开启事务,事务A4 执行update 然后提交commit。
- 2、事务A2 查询 select
- 3、此时TRX_ID = 4 ;read-view:List:1,2,3; UP_ID:1 ;LOW_ID:5
- 4、看上图判断 三个判断都为NO所以此时这条数据是可见的。
- 总结:在RR(读已提交)级别下,首次快照度,可以读取到提交事务的数据。