侵权投诉

MySQL中的redo log是什么

数据分析与开发 2021-09-14 09:40 次阅读

前言

说到MySQL,有两块日志一定绕不开,一个是InnoDB存储引擎的redo log(重做日志),另一个是MySQL Servce层的 binlog(归档日志)。

只要是数据更新操作,就一定会涉及它们,今天就来聊聊redo log(重做日志)。

redo log

redo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。

比如MySQL实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。

上一篇中阿星讲过,MySQL中数据是以页为单位,你查询一条记录,会从硬盘把一页的数据加载出来,加载出来的数据叫数据页,会放入到Buffer Pool中。

后续的查询都是先从Buffer Pool中找,没有命中再去硬盘加载,减少硬盘IO开销,提升性能。

更新表数据的时候,也是如此,发现Buffer Pool里存在要更新的数据,就直接在Buffer Pool里更新。

然后会把“在某个数据页上做了什么修改”记录到重做日志缓存(redo log buffer)里,接着刷盘到redo log文件里。

理想情况,事务一提交就会进行刷盘操作,但实际上,刷盘的时机是根据策略来进行的。

小贴士:每条redo记录由“表空间号+数据页号+偏移量+修改数据长度+具体修改的数据”组成

刷盘时机

InnoDB存储引擎为redo log的刷盘策略提供了innodb_flush_log_at_trx_commit参数,它支持三种策略

设置为0的时候,表示每次事务提交时不进行刷盘操作

设置为1的时候,表示每次事务提交时都将进行刷盘操作(默认值)

设置为2的时候,表示每次事务提交时都只把redo log buffer内容写入page cache

另外InnoDB存储引擎有一个后台线程,每隔1秒,就会把redo log buffer中的内容写到文件系统缓存(page cache),然后调用fsync刷盘。

也就是说,一个没有提交事务的redo log记录,也可能会刷盘。

为什么呢?

因为在事务执行过程redo log记录是会写入redo log buffer中,这些redo log记录会被后台线程刷盘。

除了后台线程每秒1次的轮询操作,还有一种情况,当redo log buffer占用的空间即将达到innodb_log_buffer_size一半的时候,后台线程会主动刷盘。

下面是不同刷盘策略的流程图

innodb_flush_log_at_trx_commit=0

为0时,如果MySQL挂了或宕机可能会有1秒数据的丢失。

innodb_flush_log_at_trx_commit=1

为1时, 只要事务提交成功,redo log记录就一定在硬盘里,不会有任何数据丢失。

如果事务执行期间MySQL挂了或宕机,这部分日志丢了,但是事务并没有提交,所以日志丢了也不会有损失。

innodb_flush_log_at_trx_commit=2

为2时, 只要事务提交成功,redo log buffer中的内容只写入文件系统缓存(page cache)。

如果仅仅只是MySQL挂了不会有任何数据丢失,但是宕机可能会有1秒数据的丢失。

日志文件组

硬盘上存储的redo log日志文件不只一个,而是以一个日志文件组的形式出现的,每个的redo日志文件大小都是一样的。

比如可以配置为一组4个文件,每个文件的大小是1GB,整个redo log日志文件组可以记录4G的内容。

它采用的是环形数组形式,从头开始写,写到末尾又回到头循环写,如下图所示。

在个日志文件组中还有两个重要的属性,分别是write pos、checkpoint

write pos是当前记录的位置,一边写一边后移

checkpoint是当前要擦除的位置,也是往后推移

每次刷盘redo log记录到日志文件组中,write pos位置就会后移更新。

每次MySQL加载日志文件组恢复数据时,会清空加载过的redo log记录,并把checkpoint后移更新。

write pos和checkpoint之间的还空着的部分可以用来写入新的redo log记录。

如果write pos追上checkpoint,表示日志文件组满了,这时候不能再写入新的redo log记录,MySQL得停下来,清空一些记录,把checkpoint推进一下。

本文到此就结束了,下篇会聊聊binlog(归档日志)。

小结

相信大家都知道redo log的作用和它的刷盘时机、存储形式。

现在我们来思考一问题,只要每次把修改后的数据页直接刷盘不就好了,还有redo log什么事。

它们不都是刷盘么?差别在哪里?

1 Byte = 8bit

1 KB = 1024 Byte

1 MB = 1024 KB

1 GB = 1024 MB

1 TB = 1024 GB

实际上,数据页大小是16KB,刷盘比较耗时,可能就修改了数据页里的几Byte数据,有必要把完整的数据页刷盘吗?

而且数据页刷盘是随机写,因为一个数据页对应的位置可能在硬盘文件的随机位置,所以性能是很差。

如果是写redo log,一行记录可能就占几十Byte,只包含表空间号、数据页号、磁盘文件偏移量、更新值,再加上是顺序写,所以刷盘速度很快。

所以用redo log形式记录修改内容,性能会远远超过刷数据页的方式,这也让数据库的并发能力更强。

其实内存的数据页在一定时机也会刷盘,我们把这称为页合并,讲Buffer Pool的时候会对这块细说

责任编辑:haq

原文标题:聊聊 redo log 是什么?

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

特斯拉Q3财报显示利润率高出天际,赚钱不靠“卖碳”了

10月22日,特斯拉如期公布了Q3财报,虽然马斯克没有出席财报会议,但这次会议带来的信息足以震撼各大....
的头像 电子发烧友网 发表于 10-27 10:41 85次 阅读

​存储价格开始呈现下跌态势 存储厂商持乐观态度

存储市场周期性明显,出货量从2018年Q3达到峰值之后,开始呈现下滑趋势,到2020年Q2开始大幅回....
的头像 电子发烧友网 发表于 10-27 09:44 85次 阅读

oppo开发者大会2021时间表

2021 OPPO开发者大会于10月27日在上海举办,在OPPO开发者大会上,将为开发者和创作者分享....
的头像 lhl545545 发表于 10-27 09:25 74次 阅读

怎样向DS1302时钟芯片写入数据和读取数据呢

怎样向DS1302时钟芯片写入数据和读取数据呢?
发表于 10-27 07:55 0次 阅读

易路:PeopleAnalytics的发展趋势及对HR的启示

本文由易路人力资源科技特邀作者Jeff Luo原创 作者简介:罗粤海Jeff,英国杜伦大学 (Dur....
的头像 话说科技 发表于 10-26 14:29 112次 阅读
易路:PeopleAnalytics的发展趋势及对HR的启示

浅析C++基础语法梳理之网络编程中Socket

Socket Linux Socket 编程(不限 Linux) Socket 中的 read()、....
的头像 C语言编程学习基地 发表于 10-26 10:10 209次 阅读
浅析C++基础语法梳理之网络编程中Socket

浅析C++基础语法之计算机网络中传输层(TCP&UDP)

运输层 协议: TCP(Transmission Control Protocol,传输控制协议) ....
的头像 C语言编程学习基地 发表于 10-26 10:07 114次 阅读
浅析C++基础语法之计算机网络中传输层(TCP&UDP)

如何将python打包后的exe还原成py

用到的工具 pyinstxtractor.py 拆包(解压)工具,将exe文件解压成一个文件夹 un....
的头像 马哥Linux运维 发表于 10-26 09:56 114次 阅读
如何将python打包后的exe还原成py

关于Mysql的20道问题详解

1.什么Mysql的事务?事务的四大特性?事务带来的什么问题? Mysql中事务的隔离级别分为四大等....
的头像 Linux爱好者 发表于 10-26 09:56 105次 阅读
关于Mysql的20道问题详解

如何抓住这种需求激增所带来的物联网市场机会

  随着技术的发展,连网设备的数量正在迅速增加。事实上,据估计,目前每秒钟有 127 台新设备连接到....
的头像 物联网智慧城市D1net 发表于 10-26 09:10 308次 阅读

2021年前三季度净利润增长112.90%,紫光国微超级智慧芯版图全面打开

10月25日晚间,紫光国微(002049.SZ)发布2021年三季度报告,前三季度公司实现营收37.....
的头像 科讯视点 发表于 10-26 08:54 841次 阅读
2021年前三季度净利润增长112.90%,紫光国微超级智慧芯版图全面打开

有效解决内存墙问题 存算一体正处在快速发展阶段

电子发烧友网报道(文/李弯弯)随着技术的发展,现在计算的任务越来越复杂,需要的数据也越来越多,而在冯....
的头像 Carol Li 发表于 10-26 07:45 809次 阅读
有效解决内存墙问题 存算一体正处在快速发展阶段

如何通过FEDOT将AutoML用于时间序列数据?

如何通过FEDOT将AutoML用于时间序列数据? 如何通过时间序列预测的现实世界任务了解FEDOT的核心正在发生什么? ...
发表于 10-26 07:37 0次 阅读

stm32芯片的存储有多大呢

stm32有哪几款芯片呢? stm32芯片的存储有多大呢? ...
发表于 10-26 06:59 0次 阅读

如何选择异常检测算法

异常检测(也称为离群点检测)是检测异常实例的任务,异常实例与常规实例非常不同。这些实例称为异常或离群....
的头像 Imagination Tech 发表于 10-25 09:15 152次 阅读

什么是双向数据绑定?

什么是双向数据绑定? 什么是Object.definePropety? ...
发表于 10-25 07:21 0次 阅读

华为开发者大会2021智能硬件开发—正确的数据分级分类

2021年10月22日~24日,华为将在中国松山湖举行2021华为开发者大会,聚焦鸿蒙系统、智能家居....
的头像 汽车玩家 发表于 10-23 15:21 157次 阅读
华为开发者大会2021智能硬件开发—正确的数据分级分类

华为开发者HarmonyOS零基础入门:UI组件设计开发实践

华为开发者HarmonyOS零基础入门:UI组件设计开发实践之图库应用介绍,应用数据加载显示模型图片....
的头像 lhl545545 发表于 10-23 10:58 198次 阅读
华为开发者HarmonyOS零基础入门:UI组件设计开发实践

华为开发者HarmonyOS零基础入门:系统能力调用示例

华为开发者HarmonyOS零基础入门:系统能力调用示例,修改组件属性页面加载参数接收数据连接,优化....
的头像 lhl545545 发表于 10-23 10:44 219次 阅读
华为开发者HarmonyOS零基础入门:系统能力调用示例

分布式锁三个属性和两大类

“分布式锁”这个问题快被说烂了,奈何笔者实在没有找到一个满意的答案,故记录自己寻找答案、总结的过程。....
的头像 数据分析与开发 发表于 10-22 17:30 289次 阅读

MySQL join的语义学习

1. 数学基础:笛卡尔乘积 笛卡尔乘积是一个数学概念: 笛卡尔乘积是指在数学中,两个集合 X 和 Y....
的头像 数据分析与开发 发表于 10-22 16:41 110次 阅读
MySQL join的语义学习

埋点实践过程中遇到的一些问题

埋点本身现在已经有太多的集成解决方案,神策、诸葛IO、GIO,但是在实践的过程中仍然还是会碰都很多问....
的头像 数据分析与开发 发表于 10-22 16:33 243次 阅读

支持数据转发和基于FPGA的图像处理卸载的图像采集卡

单输入至四输入的CoaXPress 2.0图像采集卡,支持数据转发和基于FPGA的图像处理卸载 用于....
的头像 广州虹科电子科技有限公司 发表于 10-22 10:38 830次 阅读
支持数据转发和基于FPGA的图像处理卸载的图像采集卡

思迈特软件Smartbi:数据看板搭建的常见错误分析

但在实际工作中,由于拉新、留存、转化分别由市场、产品、运营三个部门负责,用户增长数据分隔在三个部门的....
发表于 10-22 10:37 37次 阅读

北明软件参加华为开发者大会2021

据消息,北明软件参加华为开发者大会2021,北明软件将通过“软件定义世界,数据驱动未来”愿景,全方位....
的头像 lhl545545 发表于 10-22 09:31 313次 阅读

NVIDIA为轻量级地图和精确感知提供高性能计算

NVIDIA DRIVE Orin为轻量级地图和精确感知提供高性能计算。 自动驾驶卡车需要减轻绘制地....
的头像 NVIDIA英伟达企业解决方案 发表于 10-22 09:26 193次 阅读

怎样去提取基于视频流的兴趣HOG特征呢

怎样去提取基于视频流的兴趣HOG特征呢?其具体原理是什么?...
发表于 10-22 06:01 0次 阅读

基于FPGA的百变逻辑设计

FPGA方案 随着一款产品在研发阶段的日渐成熟,实现的功能也日趋复杂化和多样化,对产品功能实现重定义....
的头像 润欣科技Fortune 发表于 10-21 15:11 183次 阅读
基于FPGA的百变逻辑设计

浅析数据分析之指标设计

数据指标,并不是数据分析和业务同学的专属模块。日常会用到数据指标的,还包括开发(比如机器资源利用率,....
的头像 数据分析与开发 发表于 10-21 14:27 219次 阅读

MySQL数据库Access存储读取SQL语句

LabVIEW视频教程MySQL数据库Access存储读取SQL语句
发表于 10-21 11:59 202次 阅读

数据分析如何中看又中用?送你一套方案大大提升工作效率

相信大多数永洪BI的用户都和我有着同一个苦恼,报告做得越来越复杂后,要找到某个组件变难了。只能点击到....
发表于 10-21 10:16 94次 阅读
数据分析如何中看又中用?送你一套方案大大提升工作效率

GPIB仪器控制设备使用GPIB接口将仪器集成到系统中

NI 致力于为半导体、电子、交通运输、航空航天与国防、学术等诸多领域的客户提供服务,主要产品包括数据....
的头像 易络盟电子 发表于 10-20 17:28 356次 阅读

曙光政务数据中台系统江苏工信厅重点首版产品公示

近日,江苏省工业和信息化厅发布了“2021年江苏省重点领域首版次软件产品征集拟推广首版次软件产品名单....
的头像 中科曙光 发表于 10-20 16:36 390次 阅读

简述ElasticSearch的实现

1.近实时搜索 1.1 实时与近实时 实时搜索(Real-time Search)很好理解,对于一个....
的头像 马哥Linux运维 发表于 10-20 14:45 295次 阅读

Page Cache是什么 一文带你深入理解Linux的Page Cache

作者:Spongecaptain https://spongecaptain.cool/Simple....
的头像 Linux爱好者 发表于 10-20 14:12 132次 阅读
Page Cache是什么 一文带你深入理解Linux的Page Cache

探究超大Transformer语言模型的分布式训练框架

NVIDIA Megatron 是一个基于 PyTorch 的框架,用于训练基于 Transform....
的头像 NVIDIA英伟达企业解决方案 发表于 10-20 09:25 372次 阅读

一种通过配方功能实现简单高效控制的方法解析

1 前言 物联网的应用大多基于对各种数据的采集和控制,而一般的工程项目中产生的数据数量都很庞大,若是....
的头像 广州虹科电子科技有限公司 发表于 10-20 09:13 438次 阅读
一种通过配方功能实现简单高效控制的方法解析

华为G9和华为p8的硬件配置有何区别

华为G9和华为p8区别在哪? 华为G9和华为p8的硬件配置有何区别? ...
发表于 10-20 06:15 0次 阅读

气体传感器BME688常见问题

在使用传感器的过程中,你是否有很多问号 ——在采样时需要强制空气进入BME688吗? ——由于数据是....
的头像 Bosch Sensortec 发表于 10-19 17:36 367次 阅读
气体传感器BME688常见问题

超融合数据中心网络简介

现如今,数据中心正成为算力中心,为千行百业提供数字化底座,并基于海量数据挖掘其中的商业价值。同时,在....
的头像 华为产品资料 发表于 10-19 15:17 327次 阅读
超融合数据中心网络简介

紫光集团重整最新消息:已确认千亿债权规模

天眼查数据显示,紫光集团公司已经于近日正式开始重整,并已确定债权规模1081.81亿元。并且在未来集....
的头像 lhl545545 发表于 10-19 14:47 719次 阅读

华为刘康:出面向5.5G目标网络架构 以电信云原生为基础

[阿联酋,迪拜,2021年10月13日] 今日,第六届5G核心网峰会(5G Core Summit ....
的头像 华为云核心网 发表于 10-19 14:41 333次 阅读

人工智能如何影响工业物联网

■ 或许这就是为什么在没有IIoT提供关键帮助的情况下,企业很难在工业4.0带来的大规模数字转型中能....
的头像 贸泽电子 发表于 10-19 10:31 1443次 阅读

雷诺汽车使用深度学习网络估计 NOx 排放量

雷诺汽车构建并训练了一个长短期记忆 (LSTM) 网络,该网络预测 NOx 水平的准确率达到了 85....
的头像 MATLAB 发表于 10-19 10:12 277次 阅读

技术和架构选择比以往更重要

在后疫情时代当企业开始尝试复兴和以全新的面貌示人,有一点变得显而易见:技术和架构选择比以往更重要。 ....
的头像 英特尔FPGA 发表于 10-19 09:56 239次 阅读

教你怎样去搜索淘宝API app店

教你怎样去搜索淘宝API app店?
发表于 10-19 09:01 0次 阅读

主存中存储单元地址是如何进行分配的

主存中存储单元地址是如何进行分配的?存储芯片的容量有多大?...
发表于 10-19 08:25 0次 阅读

压缩算法是怎么定义的呢

什么是压缩算法呢?压缩算法又是怎么定义的呢?文件是如何存储的?...
发表于 10-19 07:01 0次 阅读

我国特高压交直流混联大电网正式运行

近年来,我国逐步形成特高压交直流混联大电网。可满足大容量直流和大规模新能源接入后提高电网仿真精度和效....
的头像 lhl545545 发表于 10-18 17:34 1062次 阅读

多功能移动环境监测仪的概述及特点

多功能移动环境监测仪介绍FT-BQX10 【风途】山东风途物联网科技有限公司气象站系列有FT-BQX....
发表于 10-18 16:57 68次 阅读

数据中台建设的价值和意义

让数据用起来,产生业务价值是数据中台建设的第一优先级。至于这个用起来的过程是否是自动化的,是否有大数....
发表于 10-18 16:52 59次 阅读

微信回应崩了 微信或将推出深度清理新功能

 今天上午微信大部分用户反映称微信图片打不开、已经无法收发图片、文件,目前微信官方已经对此做出回复称....
的头像 lhl545545 发表于 10-18 16:45 595次 阅读

华为创新性地推出“5G新通话”解决方案

在北京国家会议中心举行的2021年中国国际信息通信展览会上,由中国通信企业协会发起的“ICT中国(2....
的头像 华为云核心网 发表于 10-15 17:27 528次 阅读

华为发布SD-WAN逐包负载分担方案 提升带宽利用率

华为SD-WAN逐包负载分担方案,提升带宽利用率至90%,让您的广域网络更加高效。
的头像 华为产品资料 发表于 10-15 16:44 411次 阅读

教大家如何减小微量水分策略的结果中的误差

微量水分测定仪采用卡尔——菲休库仑法,对不同物质进行微量水分测定,是一种可靠的方法,微量水分测定仪成....
发表于 10-15 16:39 34次 阅读

详解工业液体密度测试步骤

业液体通常需要进行液体密度的测试来加以控制品质。行业内的测试仪就是搏仕的液体密度测试仪了。下面将演示....
发表于 10-15 16:27 30次 阅读

音频电路原理(双音频解码电子电路/TDA2822双声道功放电路/音频放大处理电路)

双音多频信号解码电路是目前在按键电话(固定电话、移动电话)、程控交换机及无线通信设备中广泛应用的集成....
发表于 10-15 16:08 1344次 阅读
音频电路原理(双音频解码电子电路/TDA2822双声道功放电路/音频放大处理电路)

浅析压敏(热敏)陶瓷粉末水分测试实验报告

厦门搏仕检测设备有限公司  www.lboshi.cn 18959266236 陶瓷粉末水分含量介绍....
发表于 10-15 15:57 35次 阅读

探究塑料颗粒密度测试仪实验报告

密度计品牌:搏仕 型号:BOS-300系列 测试品:塑料颗粒 塑料种类纷多,密度值各不相同,如PP料....
发表于 10-15 15:47 31次 阅读

剖析汽车塑料零配件水分测试仪实验

水分仪品牌:搏仕     型号:BOS-180A系列     测试品:汽车塑料片 塑料的含水量是影响....
发表于 10-15 15:23 18次 阅读