Mysql-redoLog

本文详细介绍了MySQL InnoDB存储引擎的Redo Log,包括其格式、Redo Log Buffer的工作原理以及刷盘时机。Redo Log用于记录数据库修改,确保在系统崩溃时能恢复数据。内容涵盖Redo Log的环形结构、内存中的Redo Log Buffer及其在事务提交、空间回收和恢复时间缩短等方面的作用,以及不同刷盘策略的讨论。

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

Redo Log

redo log进行刷盘的效率要远高于数据页刷盘,具体表现如下
redo log体积小,只记录了哪一页修改的内容,因此体积小,刷盘快
redo log是一直往末尾进行追加,属于顺序IO。效率显然比随机IO来的快

Redo log 格式

在MySQL的InnoDB存储引擎中,redo log(重做日志)被用于记录数据库的所有修改操作,以便在系统崩溃时可以利用重做日志来恢复数据。重做日志是InnoDB存储引擎的一种WAL(Write Ahead Logging,预写式日志)技术,先写日志,再写入磁盘。
redo log 本质上记录的就是对某个表空间的某个数据页的某个偏移量的地方修改了几个字节的值,它需要记录的其实就是 表空间号+数据页号+偏移量+修改的长度+具体的值,所以 redo log 占用的空间非常小,一条 redo log 也就几个字节到几十个字节的样子。
针对不同的修改场景,InnoDB定义了多种类型的 redo log,不同类型的 redo log 基本上就是下面这样的一个结构。
在这里插入图片描述

此外,整个redo log是基于环形结构的,也就是当redo log写到日志文件末尾时,会回到日志文件的开始继续写入(前提是从上次的checkpoint开始到日志文件末尾的部分已经被刷新到磁盘中)。
需要注意的是,InnoDB存储引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员路同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值