基于Redo log & Undo log的MySQL的崩溃恢复

本文详细解释了MySQL中基于Redolog和Undolog的更新流程,涉及数据修改、RedologBuffer的作用、顺序IO与随机IO的性能差异,以及为解决binlog一致性问题的两阶段提交协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Redo log & Undo log的MySQL的崩溃恢复

Redo log Undo log

Redo log 重做日志,记录,修改过的数据
Undo log 回滚日志,记录修改之前的数据

两个我不做详细的介绍了,redo log就是记录哪些地方被修改了
undo log是记录修改之前我们的数据长什么样

更新流程

在这里插入图片描述

我们来捋一下这个流程,首先是更新数据,会先去Buffer Pool中查找是否有这个页,如果说不存在这个页,就会从磁盘中加载,也就是第二步

第三步,有了这个页,我们需要先写Undo log,在一切开始之前,先记录没动过的样子

第四步,就是更新数据,先是写入Redo log Buffer中,因为一个事务中不止一个修改的地方,所以先写道Redo log Buffer中,一并写入到Redo log 文件中去

然后是写Binlog文件

其中有几点我们需要继续探讨

为什么要写入Redo log buffer中?我们修改完页,为什么不直接刷入到磁盘中去

这个问题很好理解,为什么修改之后,不直接刷入到磁盘去呢?因为这样子做,效率太低了,我们要刷入到磁盘的化,肯定是以页为单位的,一个页是16kb,而且还是随机IO,那样写的太慢了,我么redo log 文件,是顺序IO,性能快,而且不是完整的页

占用内存小,又快,肯定写到buffer中去,然后写到redo log file文件中啊

两阶段提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憨憨小江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值