美文网首页
一天一道面试题——数据库篇7(MVCC)

一天一道面试题——数据库篇7(MVCC)

作者: 猿哥媛姐 | 来源:发表于2022-02-20 15:09 被阅读0次

    MVCC是什么

    MVCC就是用同一份数据临时保留多版本的方式的方式,实现并发控制。,快照读可以使普通的SELECT 读取数据时不用对表数据进行加锁,从而解决了因为对数据库表的加锁而导致的两个如下问题

    • 解决了因加锁导致的修改数据时无法对数据读取问题;
    • 解决了因加锁导致读取数据时无法对数据进行修改的问题;

    MVCC的实现

    InnoDB中使用版本链和ReadView实现MVCC。

    隐藏列

    DB_TRX_ID(表示最近修改该行数据的事务ID)列,DB_ROLL_PTR(指向该行回滚段的指针)列。

    版本链

    通过DATA_ROLL_PTR,可以读取历史版本数据。
    历史版本数据是在undolog

    ReadView

    ReadView记录的属性

    • 最小活动事务ID
    • 最大活动事务ID
    • 活动事务ID集合
    • 当前事务ID。

    判断是否可读

    • 小于最小活动事务ID,可读。
    • 大于最大活动事务ID,可读。
    • 之间,在集合中,不可读,不在集合中,可读。

    ReadView生成时机

    • READ COMMITTED —— 每次读取数据前都生成一个ReadView。
    • REPEATABLE READ —— 在第一次读取数据时生成一个ReadView。

    相关文章

      网友评论

          本文标题:一天一道面试题——数据库篇7(MVCC)

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