当前位置:   article > 正文

MySQL高级-MVCC-原理分析(RC级别)

MySQL高级-MVCC-原理分析(RC级别)

1、RC隔离级别下,在事务中每一次执行快照读时生成ReadView

我们就来分析事务5中,两次快照读读取数据,是如何获取数据的?

事务5中,查询了两次id为30的记录,由于隔离级别为Read Committed,所以每一次进行快照读
都会生成一个ReadView,那么两次生成的ReadView如下。

在这里插入图片描述
那么这两次快照读在获取数据时,就需要根据所生成的ReadView以及ReadView的版本链访问规则,到undolog版本链中匹配数据,最终决定此次快照读返回的数据。

在这里插入图片描述

2、先来看第一次快照读具体的读取过程:

在这里插入图片描述
在进行匹配时,会从undo log的版本链,从上到下进行挨个匹配:

  • 先匹配
    在这里插入图片描述这条记录,这条记录对应的trx_id为4,也就是将4带入右侧的匹配规则中。 ①不满足 ②不满足 ③不满足 ④也不满足 ,都不满足,则继续匹配undo log版本链的下一条。
  • 再匹配第二条
    在这里插入图片描述
    ,这条记录对应的trx_id为3,也就是将3带入右侧的匹配规则中。①不满足 ②不满足 ③不满足 ④也不满足 ,都不满足,则继续匹配undo log版本链的下一条。
  • 再匹配第三条
    在这里插入图片描述
    ,这条记录对应的trx_id为2,也就是将2带入右侧的匹配规则中。①不满足 ②满足 终止匹配,此次快照读,返回的数据就是版本链中记录的这条数据。

3、再来看第二次快照读具体的读取过程:

在这里插入图片描述
在进行匹配时,会从undo log的版本链,从上到下进行挨个匹配:

  • 先匹配
    在这里插入图片描述
    这条记录,这条记录对应的trx_id为4,也就是将4带入右侧的匹配规则中。 ①不满足 ②不满足 ③不满足 ④也不满足 ,都不满足,则继续匹配undo log版本链的下一条。
  • 再匹配第二条
    在这里插入图片描述
    ,这条
    记录对应的trx_id为3,也就是将3带入右侧的匹配规则中。①不满足 ②满足 。终止匹配,此次快照读,返回的数据就是版本链中记录的这条数据。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/779475
推荐阅读
相关标签
  

闽ICP备14008679号