MySQL事务日志 (redo log)

news2024/11/24 9:19:27

MySQL事务日志 (redo log)

事务的隔离性由 锁机制 实现。

而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。

  • REDO LOG 称为 重做日志 ,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性

  • UNDO LOG 称为 回滚日志 ,回滚行记录到某个特定版本,用来保证事务的原子性、一致性

image-20221226170157586

1 redo 日志

1 为什么要有redo 日志

缓冲池可以帮助我们消除CPU和磁盘之间的鸿沟,checkpoint机制可以保证数据的最终落盘,然 而由于checkpoint 并不是每次变更的时候就触发 的,而是master线程隔一段时间去处理的。所以最坏的情 况就是事务提交后,刚写完缓冲池,数据库宕机了,那么这段数据就是丢失的,无法恢复。

  1. 修改与刷盘工作量不匹配

    InnoDB是以页为单位进行数据操作的,一页为16K,若果我们只修改了一条数据,刷盘时要将这个页全写入磁盘。

  2. 随机IO慢

​ 有的记录分布在很多页上,页面随机分布,从内存写到磁盘上时,要将多个页写入磁盘。IO次数很多,浪费时间。

解决

采用WLA( write-ahead logging)技术实现 ,先写日志,再写磁盘,只有当日志写成功时,事务才算提交成功

2 redo的组成

Redo log可以简单分为以下两个部分

重做日志的缓冲 (redo log buffer) ,保存在内存中,是易失的。

默认大小为16M,最小为1M,最大4096M.

重做日志文件 (redo log file) ,保存在硬盘中,是持久的。

3 redo的整体流程

image-20221226172826790

4 redo log的刷盘策略

MySQL后台有一个maser线程,每过1秒执行一次将redo log buffer 中的数据写入到page cache中,然后写入磁盘。如果mysql挂了,会丢失1秒内数据。当redo log buffer 大小为 innodb_log_buffer_size(16M)的一半时,也会刷盘。

事务提交时,先将日志记录到redo log buffer 中,何时进行写入到磁盘上呢?由InnoDB给出 innodb_flush_log_at_trx_commit 参数决定。它支持三种策略:

设置为0 :表示每次事务提交时不进行刷盘操作。(系统默认master thread每隔1s进行一次重做日 志的同步) 写入到redo log buffer就算事务提交成功。

设置为1 :表示每次事务提交时都将进行同步,刷盘操作( 默认值 ),记录到磁盘上才算成功

设置为2 :表示每次事务提交时都只把 redo log buffer 内容写入 page cache,不进行同步。由os自己决定什么时候同步到磁盘文件。写入到page cache上就算事务提交成功

image-20221226174819730

事务提交成功,日志一定在磁盘里,不用担心数据丢失问题。但效率最差。

思考:一个长事务要执行5秒,master线程一秒刷一次盘,此时第五秒mysql挂了,但前4秒数据已经写入到日志磁盘上了,如何解决?

image-20221226180737859

写入page Cache 就算提交成功,如果操作系统挂了,将会丢失1秒内数据

image-20221226181011917

MySQL挂了,丢失1秒内数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用YonBuilder进行报表分析?

报表是基于业务元数据、业务模型、数据模型等数据来源展示与分析业务的重要工具,在YonBuilder中可以通过简单拖拽、选择,快速生成报表分析,提升报表开发效率。本期通过员工信息数据对YonBuilder中报表的基本配置进行介绍。 01、创建报表 首…

深入理解kafka-1

kafka快速入门1、kafka简介1.1 kafka是什么1.2 kafka基础架构1.3 kafka模块概述2、kafkka结构剖析2.1 kafka工作流程2.2 kafka文件存储2.2.1 顺序写2.2.2 分片,索引2.2.3 页缓存2.2.4 零拷贝2.3 broker集群2.3.1 Controller控制器及选举机制2.4 生产者2.4.1 生产者分…

MCU-51:定时器

目录一、定时器介绍1.1 定时器的功能1.2 定时器的结构1.3 定时器框图二、定时器控制2.1 工作模式寄存器TMOD2.2 控制寄存器TCON三、中断系统3.1 中断系统介绍3.2 中断程序流程3.3 STC89C52中断资源四、应用4.1 定时器控制LED闪烁4.2 基于定时器按键控制LED流水灯4.3 定时器时钟…

C进阶 :征服指针之指针与数组强化笔试题练习(1)

目录 😼😸一.彻底明白 sizeof 操作符 ,数组名,strlen 函数 🐅1.数组名的意义 🐆2. sizeof 详解 🐋3.strlen详解 🦖3.数组名意义详细图解演示 🐱🙀二.关于…

使用JDBC+javafx写一个简单功能齐全的图书管理系统

目录 1、JDBC的使用 2、对应包和Java文件的层级关系及对应的含义 3、数据库 4、相关代码 1)、bookmanager包 Ⅰ、main函数 Ⅱ、utils包 Ⅲ、bean包 Ⅳ、controller包 2)resources(为资源文件包,可以看链接文章了解) Ⅰ、book包 Ⅱ、 login包…

嘘!P站数据分析年报;各省市疫情感染进度条;爱奇艺推出元宇宙App;You推出AI聊天机器人;GitHub今日热榜 | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 『The 2022 Year in Review』P站2022年度报告 Pornhub 发布了第 9 次年度报告,数据科学家们绘制了多张彩色可视化图表,回顾…

Spring注册Bean系列--方法3:@Import+@Bean

原文网址:Spring注册Bean系列--方法3:ImportBean_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring注册Bean的方法:ImportBean。 注册Bean的方法我写了一个系列,见:Spring注册Bean(提供Bean)系列--方法大全_IT利刃出鞘…

Redis-SDS

本文你能得到: 1 SDS基本介绍 。 2 SDS与 C语言传统字符串的区别,为什么使用SDS。 3 SDS的结构和策略详解。 1 SDS 是什么?用来做什么? 1.1 ​ Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组&a…

[网络工程师]-STP

生成树协议(Spanning Tree Protocol,STP)是一种链路管理协议,为网络提供路径冗余,同时防止产生环路。交换机之间使用网桥协议数据单元(Bridge Protocol Data Unit,BPDU)来交换STP信息…

C语言中单井号(#)和双井号(##)在宏语句中的应用

在阅读Linux内核代码过程中,特别是一些预处理指令宏的时候,会看到宏语句里会包含一些# 或者是连着的## 符号,刚接触的时候觉得很一头雾水,但这些宏语句有时候绕不开,所以为了更好地读懂这些代码,很有必要仔…

头豹研究院发布《2022年腾讯安全威胁情报能力中心分析报告》:助力企业掌握安全防御主动权

12月23日,头豹研究院发布了《2022年腾讯安全威胁情报能力中心分析报告》(以下简称《报告》),深度研究了腾讯安全威胁情报能力建设、威胁情报能力应用、威胁情报价值实践方面的现状及成果,从专业视角分析腾讯安全威胁情…

全网首发!华为云UCS正式商用

日前,华为云UCS正式商用。华为云UCS是业界首个分布式云原生服务,支持对华为云集群、伙伴云集群、多云集群、本地集群和附着集群的统一管理,覆盖中心Region、专有Region、边缘云、客户数据中心和第三方云场景,提供无处不在的云原生…

深度学习02:损失函数总结

目录 nn.L1Loss: nn.NLLLoss: nn.MSELoss: nn.CrossEntropyLoss: 损失函数是用来估量模型的预测值与真实值的不一致程度,它是一个非负实值函数。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函…

Day 05- Vue3 Vue2响应式原理

Vue2的响应式 核心:通过 Object.defineProtytype() 对对象的已有属性值的读取和修改进行劫持; 数据劫持 --> 给对象扩展属性 --> 属性设置 实现原理: 对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截…

风控黑名单库的使用与判断指南

反欺诈策略中有一类策略是专门针对黑名单用户的,我们称之为黑名单命中策略。 一、黑名单定义 黑名单是对严重逾期、骗贷、失联、诈骗等系列高风险客群构建的名单,即为明确非意向客群的名单。黑名单也是反欺诈的第一道防线,可以有效识别黑产客…

近些年大火的零信任,落地情况怎么样?

疫情以来      居家办公、远程工作需求激增      企业IT环境变得更加复杂      在此背景下      以“持续验证,永不信任”为核心的      零信任火爆出圈      引得国内外企业机构纷纷布局      然而根据戴尔2022全球数据保护指数(GDPI),尽管91%的组…

使用FFmpeg+go搭建m3u8点播服务器

一. 前言 HLS(HTTP Live Streaming) 是苹果公司提出的基于 HTTP 的流媒体传输协议,它的工作原理是将整个文件切分成一个个小的文件(通常是 TS 格式文件),客户端通过 HTTP 下载播放。在准备播放某个 m3u8 媒…

Linux系统运行时参数命令--Linux基础命令和工具

目录 1 Linux基础命令和工具 1.1 grep搜索字符 1.2 find查找文件 1.3 ls显示文件 1.4 wc命令 1.5 ulimit用户资源 1.6 scp远程拷贝 1.7 dos2unix和unix2dos 1.8 sed 行处理 简单模式 替换模式 1.9 awk 列处理 C/CLinux服务器开发/后台架构师【零声教育】-学习视频…

车载软件架构—CP和AP相同与不同

文章目录 前言一、两者不同之处二、两者架构设计原则总结前言 AUTOSAR(AUTmotive Open System ARchitecture) 是汽车电子E/E系统发展的一个重要的节点。该标准是由包括BMW、DAIMLER、GM、TOYOTA、福特等主机厂和包括博世、大陆等供应商牵头成立的一个标准发展组织定义的一个开…

45页智慧交通数字化解决方案2022

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除! 完整资料领取见文末,部分资料内容: 项目建设目标…