MySQL之InnoDB中的redo日志类型详解

 更新时间:2025年06月26日 09:28:11   作者:在成都搬砖的鸭鸭  
这篇文章主要介绍了MySQL之InnoDB中的redo日志类型,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、背景

执行我们的sql语句是在Buffer Pool中操作的,因为刷新到磁盘慢的原因可能不会立即同步到磁盘,当系统崩溃时,肯定不能让我们的操作丢失,但是Buffer Pool中的脏页还未同步到磁盘,所以就要把操作Buffer Pool的这一过程更轻量的记录下来并写的磁盘,记录下来的内容就叫redo日志

2、redo日志

【1】格式

redo日志的类型有很多种,每条日志的前面部分都是相同的,其通用结构如下如图所示:

在这里插入图片描述

字段含义如下:

字段含义
typeredo日志类型
space ID表空间ID
page number页号
dataredo日志的具体内容

【2】类型

redo日志类型常见的有如下几种:

字段十进制数含义
MLOG_1BYTE1在页面的某个偏移量处写入1个字节的redo日志类型
MLOG_2BYTE2在页面的某个偏移量处写入2个字节的redo日志类型
MLOG_4BYTE4在页面的某个偏移量处写入4个字节的redo日志类型
MLOG_8BYTE8在页面的某个偏移量处写入8个字节的redo日志类型
MLOG_WRITE_STRING30在页面的某个偏移量处写入一串数据的redo日志类型
MLOG_REC_INSERT9插入一条使用非紧凑行格式记录的redo日志类型
MLOG_COMP_REC_INSERT38插入一条使用紧凑行格式记录的redo日志类型
MLOG_COMP_PAGE_CREATE58创建一个存储紧凑行格式记录的页面的redo日志类型
MLOG_COMP_REC_DELETE42删除一条使用紧凑行格式记录的redo日志类型
MLOG_COMP_LIST_START_DELETE44删除一系列使用紧凑行格式记录的开头redo日志类型
MLOG_COMP_LIST_END_DELETE43删除一系列紧凑行格式记录的结尾redo日志类型
MLOG_ZIP_PAGE_COMPRESS51压缩一个数据页的redo日志类型
MLOG_MULTI_REC_END31代表一组redo日志中的最后一条redo日志类型

接下来就大概讲一下几种redo日志类型结构, MLOG_1BYTE、 MLOG_2BYTE、 MLOG_4BYTE、 MLOG_8BYTE的结果如下:

在这里插入图片描述

MLOG_WRITE_STRING类型结构如下:

在这里插入图片描述

MLOG_COMP_REC_INSERT类型结构如下:

在这里插入图片描述

【3】组

像事务一样,有的场景一组redo日志也具有原子性的特性,所以就有MLOG_MULTI_REC_END类型的redo日志来表示一组redo日志的最后一条,为了区分redo日志到底是单一的还是属于某个组的,就将redo日志结构中的type字段8字节分为前面1字节和后面7字节,前面1字节为1就代表单一的redo日志,否则就为某个组的redo日志,后面7个字节用来表示redo日志类型。

【4】Mini-Transaction

访问一组redo日志的过程叫做Mini-Transaction,一个事务可以包含多个语句,一个语句可以包含多个Mini-Transaction,一个Mini-Transaction包含多个redo日志,这就是它们之间的关系。

3、总结

本文主要简单介绍了一下redo日志有哪几种类型,还有一些其它的类型可以在网上大概查找了解一下。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql建立自定义函数的问题

    mysql建立自定义函数的问题

    由于这几天在写mysql存储过程且发现程序体积越来越庞大,于是尝试使用mysql的函数
    2011-04-04
  • mysql 数据库死锁原因及解决办法

    mysql 数据库死锁原因及解决办法

    这篇文章主要介绍了mysql 数据库死锁原因及解决办法,需要的朋友可以参考下
    2016-01-01
  • Mysql8.4.3LTS中离线部署的实现示例

    Mysql8.4.3LTS中离线部署的实现示例

    本文详细介绍了在Ubuntu 24.04系统上离线部署MySQL 8.4.3 LTS,包括环境配置、安装步骤等步骤,对小白有一定的帮助,感兴趣的可以了解一下
    2024-11-11
  • MySQL学习之基础命令实操总结

    MySQL学习之基础命令实操总结

    MySQL 是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的。本文将为大家详细介绍一些MySQL的基础命令,需要的可以参考一下
    2022-03-03
  • Mysql实验之使用explain分析索引的走向

    Mysql实验之使用explain分析索引的走向

    索引是mysql的必须要掌握的技能,同时也是提供mysql查询效率的手段。通过以下的一个实验可以理解?mysql的索引规则,同时也可以不断的来优化sql语句
    2018-01-01
  • MySQL InnoDB锁类型及锁原理实例解析

    MySQL InnoDB锁类型及锁原理实例解析

    这篇文章主要为大家介绍了MySQL InnoDB锁类型及锁原理实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • MySQL客户端软件(DBeaver)连接报错解决方案

    MySQL客户端软件(DBeaver)连接报错解决方案

    DBeaver是一个开源的通用数据库管理工具,可以连接多种不同类型的数据库,本文主要介绍了MySQL客户端软件(DBeaver)连接报错解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 一篇文章带你掌握MySQL索引下推

    一篇文章带你掌握MySQL索引下推

    索引条件下推,也叫索引下推,英文全称Index Condition Pushdown,简称ICP,索引下推是MySQL5.6新添加的特性,用于优化数据的查询,下面这篇文章主要给大家介绍了关于MySQL索引下推的相关资料,需要的朋友可以参考下
    2022-12-12
  • MySQL5.7.20解压版安装和修改root密码的教程

    MySQL5.7.20解压版安装和修改root密码的教程

    这篇文章主要介绍了MySQL5.7.20解压版安装和修改root密码的教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • MySQL中增量备份的几种实现方法

    MySQL中增量备份的几种实现方法

    MySQL数据库的增量备份是确保数据安全和可恢复性的关键策略,本文就来介绍一下如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01

最新评论