Mysql-redoLog

发布时间:2024年01月14日

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存储引擎为了

文章来源:https://blog.csdn.net/huanglu0314/article/details/135583162
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。