Mysql事务的实现原理之Redo Log的分析

570 阅读2分钟

「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战

MySQL是免费开源数据库的领头羊,其中很多企业都会用到这种数据库作为,数据关系表的工具。

MySQL的事务:

  • InnoDb引擎本身是支持事务的

  • Mysql事务的实现分为 ACID,原子隔离一致持久性

  • 其中原子性和持久性===>来源于 Redo Log

  • 事务的隔离性--->MVCC机制来确定的

  • 一致性由 Undo Log来实现

1.Redo log 的基本原理

其中mysql的中,持久性和原子性都是有Redo log 来实现的, 事务的操作要么执行成功,要么全部失败;

Redo Log 这个 “重做日志”,其中主要是存储引擎内部产生的,主要是用来保证事务的持久性和原子性,

其中主要是做物理日志,记录数据的修改操作写入磁盘中, 如果恢复的话,也只能恢复到最后一次提交的位置。

Redo Log 分为两个部分:

    1. redo log buffer -->日志缓存 ,这里是存在于内存中的数据,容易丢失;
  • 2.redo log file -->日志文件,这里是用于持久化到次哦按上的,不容易丢失;

redo log 的运行原理

当MySQL事务发送异常的时候,内存中的脏数据写入数据表的IBD文化,

在重启MySQL是服务时候,可以根据redo log 事务恢复事务已经提交但是还未写入IBD文件的数据,从而对事务提交的数据操作进行持久化操作;

其中是主要对于Redo log 中,将数据 日志缓存的数据-->从内存持久化到日志文件中, 然后日志文件在mysql异常的时候,将恢复之前提交提交的事务,但是可能没有保存到数据库IBD文件的数据操作。

redo log 图解

image.png

一般加载IBD文件之后,会完成数据的查询和更新,也可以正常的持久化数据,便于下次使用。

对于持久化的IBD文件,就是一个数据文件