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 是否在活跃事务的数组中,如果在则说明这条记录还未提交对于当前操作的事务是不可见的,如果不在则说明已经提交,那么就是可见的。
也就是第三条,根据同学反馈的情况是已经提交了,所以是可见的,因为不存在于活跃的事务列表了
00 -
慕神3289891
提问者
2020-05-24
我后面看了下,应该还是有可见性算法。那问题是,如果rc下遵循可见性算法,并且每次查询都创建read view。那这样创建的read view又跟其他事务的开始先后即事务id有关系。比如我开始一个事务a,然后开始另外一个事务b。这样b的事务id就要大于a的。但是b比a先提交。假如他们改的是同一个字段,那按照可见性算法,a是读取不到b提交的最新值的吧??因为a会去找事务id小于等于它自身的
00
相似问题