Mysql 事务的实现原理之 Redo Log 的分析
MySQL 是免费开源数据库的领头羊,其中很多企业都会用到这种数据库作为,数据关系表的工具。
MySQL 的事务:
InnoDb 引擎本身是支持事务的
Mysql 事务的实现分为 ACID,原子隔离一致持久性
其中原子性和持久性===>来源于 Redo Log
事务的隔离性--->MVCC 机制来确定的
一致性由 Undo Log 来实现
1.Redo log 的基本原理
其中 mysql 的中,持久性和原子性都是有 Redo log 来实现的,事务的操作要么执行成功,要么全部失败;
Redo Log 这个 “重做日志”,其中主要是存储引擎内部产生的,主要是用来保证事务的持久性和原子性,
其中主要是做物理日志,记录数据的修改操作写入磁盘中, 如果恢复的话,也只能恢复到最后一次提交的位置。
Redo Log 分为两个部分:
redo log buffer -->日志缓存 ,这里是存在于内存中的数据,容易丢失;
2.redo log file -->日志文件,这里是用于持久化到次哦按上的,不容易丢失;
redo log 的运行原理
当 MySQL 事务发送异常的时候,内存中的脏数据写入数据表的 IBD 文化,
在重启 MySQL 是服务时候,可以根据 redo log 事务恢复事务已经提交但是还未写入 IBD 文件的数据,从而对事务提交的数据操作进行持久化操作;
其中是主要对于 Redo log 中,将数据 日志缓存的数据-->从内存持久化到日志文件中, 然后日志文件在 mysql 异常的时候,将恢复之前提交提交的事务,但是可能没有保存到数据库 IBD 文件的数据操作。
redo log 图解
一般加载 IBD 文件之后,会完成数据的查询和更新,也可以正常的持久化数据,便于下次使用。
对于持久化的 IBD 文件,就是一个数据文件
版权声明: 本文为 InfoQ 作者【卢卡多多】的原创文章。
原文链接:【http://xie.infoq.cn/article/76f4670fb9cd16a29f1e54d5f】。文章转载请联系作者。
评论