美文网首页
mysql 的mvcc 作用和原理

mysql 的mvcc 作用和原理

作者: 玖柒叁 | 来源:发表于2023-09-06 10:08 被阅读0次

    mysql 的mvcc 作用

    Mysql有四种隔离级别,分别是读未提交、读已提交、可重复读和串行化。mvcc可以实现读已提交和可重复读。对于读已提交,mvcc会在每次查询时生成ReadView快照,而对于可重复读会在第一次查询时生成ReadView快照。

    mvcc的实现

    mvcc的实现依赖于undo log版本链,和ReadView快照。
    undo log中会保存事务的基本信息、当前事务id以及前一个undolog地址,日志与日志之间通过这样的链接形成了版本链。
    ReadView快照中包含了正在执行的事务id数组(m_ids)、正在执行事务id的最小值(min_trx_id)、下一个要生成的id(max_trx_id)、创建ReadView的事务id(creator_trx_id)。

    如何判断版本链中的某条日志内容是否对当前事务可见

    if (trx_id<min_trx_id) {
              该版本对当前事务可见
         } else if (trx_id >= max_trx_id){
              该版本对当前事务不可见
         } else {
              if (m_ids.contains(trx_id)) {
                   该版本对当前事务不可见
              } else {
                   该版本对当前事务可见
              }
         }
    

    相关文章

      网友评论

          本文标题:mysql 的mvcc 作用和原理

          本文链接:https://www.haomeiwen.com/subject/ufekvdtx.html