美文网首页
1.4 MVCC多版本控制的实现

1.4 MVCC多版本控制的实现

作者: 愤愤的有痣青年 | 来源:发表于2019-08-19 16:00 被阅读0次

    前面提到的在mysql中事务的级别默认是repeatable read(可重复读),其有出现幻读的可能性,即事务A中读到的数据可能是其他事务多次修改提交的阿虎局,导致每次读取的数据都不一样.解决这个问题的办法是使用mvcc多版本控制.
    在mysql中,mvcc的实现方式是给每个事务一个递增的版本号,然后每条数据都加上两个隐藏列,分别记录该字段创建时的事务的版本号和删除版本号.

    • 具体实现方式如下:
    SELECT:
        a. 查看创建版本号小于或者等于当前版本号的记录,确保要读取的行是当前事务或者当前事务更早的事务创建的
        b. 查看删除版本号,要么删除版本号大于当前版本或者没有定义
      只有同时满足上述两个要求的行才会被查找到
    INSERT:
        修改行的创建版本号为当前版本号
    
    DELETE:
        修改行的删除版本号为当前版本号
    
    UPDATE:
        修改行的创建版本号为当前版本号和修改行的删除版本号为当前版本号
    

    相关文章

      网友评论

          本文标题:1.4 MVCC多版本控制的实现

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