rc隔离级别的快照读,是不是都是真实读

来源:3-16 锁模块之当前读和快照读

慕神3289891

2020-05-24

rc隔离级别的快照读,是不是都是真实读,不遵循rr下的可见性算法

写回答

2回答

翔仔

2020-05-25

同学好,

首先比较这条记录的 DB_TRX_ID 是否是 小于 up_limit_id 或者 等于当前事务id。如果满足,那么说明当前事务能看到这条记录。如果大于则进入下一轮判断

然后判断这条记录的 DB_TRX_ID 是否 大于等于 low-limit-id。如果大于等于则说明此事务无法看见该条记录,不然就进入下一轮判断。

判断该条记录的 DB_TRX_ID 是否在活跃事务的数组中,如果在则说明这条记录还未提交对于当前操作的事务是不可见的,如果不在则说明已经提交,那么就是可见的。

也就是第三条,根据同学反馈的情况是已经提交了,所以是可见的,因为不存在于活跃的事务列表了

0
0

慕神3289891

提问者

2020-05-24

我后面看了下,应该还是有可见性算法。那问题是,如果rc下遵循可见性算法,并且每次查询都创建read view。那这样创建的read view又跟其他事务的开始先后即事务id有关系。比如我开始一个事务a,然后开始另外一个事务b。这样b的事务id就要大于a的。但是b比a先提交。假如他们改的是同一个字段,那按照可见性算法,a是读取不到b提交的最新值的吧??因为a会去找事务id小于等于它自身的

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程