MVCC原理、以及靠什么保证ACID 您所在的位置:网站首页 数据库ACID MVCC原理、以及靠什么保证ACID

MVCC原理、以及靠什么保证ACID

2023-04-03 06:07| 来源: 网络整理| 查看: 265

mvcc的实现原理主要由三个隐藏字段、undolog和read view实现。

隐藏字段:

        DB_TRX_ID:事务ID,创建时的事务或者最后修改记录的事务ID

        DB_ROLL_PTR:回滚指针,指向上个版本,配合undolog用于回滚

        DB_ROW_ID:行号,如果没有主键,innodb自动生成的隐藏主键

undo log日志:

        回滚日志,记录历史版本数据

read view:

        指某个事务在进行第一次数据读取时,会读取当前最新的数据,也就是说读取操作之前其他事务最后一次修改后的数据

        RC和RR的不同在于生成read view的策略不同。

        RC只会在事务第一次读取的时候生成read view,之后一直使用这个read view,所以保证了这个事务中读取的数据一直一致。

        RR读取的时候则是每次都重新生成read view,所以会产生不可重复读的情况,因为每次读都是最新的数据。

ACID如何保证:

        A(原子性):依靠undo log回滚日志保证原子性,要么全部失败要么全部成功

        C(一致性):靠其他三个以及业务上的处理共同保证

        I(隔离性):依靠MVCC保证了隔离性

        D(持久性):依靠redo log日志保证了持久性,有数据修改、增加和删除会先记录到redo log日志用,如果最后入库失败也能通过redo log日志恢复



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有