MySQL | 三大日志文件

news2025/4/16 3:33:15

Undo Log(回滚日志)

实现原理与分类

原理:Undo Log 记录的是数据修改前的旧值,通过这些旧值可以将数据恢复到修改之前的状态。它采用的是逻辑日志,即记录的是如何撤销操作,而不是物理数据的实际值。

分类:在 InnoDB 存储引擎中,Undo Log 分为两种类型,分别是插入 Undo Log(Insert Undo Log)和更新 Undo Log(Update Undo Log)。

  • 插入 Undo Log 是在插入操作时产生的,当事务提交后,该日志可以被立即删除,因为插入操作只影响当前事务,不会对其他事务产生影响;
  • 更新 Undo Log 是在更新或删除操作时产生的,它不仅用于事务回滚,还用于实现多版本并发控制(MVCC),所以不能立即删除,需要在满足一定条件(如没有其他事务需要读取该版本数据)后才能被清理。

作用场景

事务回滚 :当事务执行过程中出现错误或者用户手动回滚事务时,通过 Undo Log 可以将数据恢复到事务开始之前的状态。

MVCC(多版本并发控制):在并发环境下,不同的事务可能会同时访问和修改同一数据。MVCC 利用 Undo Log 为每个事务提供一个数据的快照,使得事务可以看到不同版本的数据,从而实现并发事务之间的隔离。

Redo Log(重做日志)

日志组与循环写入

日志组:Redo Log 通常由多个文件组成一个日志组,例如 ib_logfile0、ib_logfile1 等。这些文件按照顺序循环使用,当一个日志文件写满后,会自动切换到下一个文件继续写入。

循环写入:Redo Log 采用循环写入的方式,即当所有日志文件都写满后,会回到第一个文件重新开始写入。这种方式可以避免日志文件无限增长,同时也提高了日志文件的利用率。

刷盘策略

innodb_flush_log_at_trx_commit 参数控制了 Redo Log 的刷盘策略,有三个可选值:

  • 0:表示每秒将 Redo Log 缓冲区的内容刷写到磁盘一次,事务提交时不会立即刷盘。这种方式性能最高,但在系统崩溃时可能会丢失最多 1 秒的数据修改。

  • 1:表示每次事务提交时都将 Redo Log 缓冲区的内容刷写到磁盘,这是最安全的策略,但性能相对较低。

  • 2:表示每次事务提交时将 Redo Log 缓冲区的内容写入操作系统的文件系统缓存,但不立即刷写到磁盘,操作系统会每秒将文件系统缓存的内容刷写到磁盘。这种方式在系统崩溃时可能会丢失部分未刷盘的数据,但性能介于 0 和 1 之间。

Binlog(二进制日志)

日志格式

STATEMENT:基于 SQL 语句的日志格式,它记录的是 SQL 语句本身。这种格式的优点是日志文件较小,占用空间少,但在某些情况下可能会导致主从数据不一致,例如使用了一些不确定的函数(如 NOW()、RAND() 等)。

ROW:基于行的日志格式,它记录的是每一行数据的修改情况。这种格式可以保证主从数据的一致性,但日志文件较大,占用空间多。

MIXED:混合日志格式,MySQL 会根据具体的 SQL 语句自动选择合适的日志格式。对于大多数情况,会使用 ROW 格式;对于一些不会导致主从数据不一致的 SQL 语句,会使用 STATEMENT 格式。

日志过期与清理

Binlog 文件会随着时间的推移不断增长,为了避免占用过多的磁盘空间,需要定期清理过期的 Binlog 文件。可以通过设置 expire_logs_days 参数来指定 Binlog 文件的保留天数,超过该天数的 Binlog 文件会被自动删除。另外,也可以使用 PURGE BINARY LOGS 命令手动清理指定的 Binlog 文件。

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

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

相关文章

【网络协议】WebSocket讲解

目录 webSocket简介 连接原理解析: 客户端API 服务端API(java) 实战案例 (1)引入依赖 (2)编写服务端逻辑 (3)注册配置类 (4)前端连接 WebSocket 示例…

啥是Spring,有什么用,既然收费,如何免费创建SpringBoot项目,依赖下载不下来的解决方法,解决99%问题!

一、啥是Spring,为啥选择它 我们平常说的Spring指的是Spring全家桶,我们为什么要选择Spring,看看官方的话: 意思就是:用这个东西,又快又好又安全,反正就是好处全占了,所以我们选择它…

一天时间,我用AI(deepseek)做了一个配色网站

前言 最近在开发颜色搭配主题的相关H5和小程序,想到需要补充一个web网站,因此有了这篇文章。 一、确定需求 向AI要答案之前,一定要清楚自己想要做什么。如果你没有100%了解自己的需求,可以先让AI帮你理清逻辑和思路,…

Spring - 13 ( 11000 字 Spring 入门级教程 )

一: Spring AOP 备注:之前学习 Spring 学到 AOP 就去梳理之前学习的知识点了,后面因为各种原因导致 Spring AOP 的博客一直搁置。。。。。。下面开始正式的讲解。 学习完 Spring 的统一功能后,我们就进入了 Spring AOP 的学习。…

Spring Cloud Alibaba微服务治理实战:Nacos+Sentinel深度解析

一、引言 在微服务架构中,服务发现、配置管理、流量控制是保障系统稳定性的核心问题。Spring Cloud Netflix 生态曾主导微服务解决方案,但其部分组件(如 Eureka、Hystrix)已进入维护模式。 Spring Cloud Alibaba 凭借 高性能、轻…

红宝书第三十六讲:持续集成(CI)配置入门指南

红宝书第三十六讲:持续集成(CI)配置入门指南 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、什么是持续集成? 持续集成(CI)就像咖啡厅的…

Java—HTML:3D形变

今天我要介绍的是在Java HTML中CSS的相关知识点内容之一:3D形变(3D变换)。该内容包含透视(属性:perspective),3D变换,3D变换函数以及案例演示, 接下来我将逐一介绍&…

什么是音频预加重与去加重,预加重与去加重的原理是什么,在什么条件下会使用预加重与去加重?

音频预加重与去加重是音频处理中的两个重要概念,以下是对其原理及应用条件的详细介绍: 1、音频预加重与去加重的定义 预加重:在音频信号的发送端,对音频信号的高频部分进行提升,增加高频信号的幅度,使其在…

免费下载 | 2025清华五道口:“十五五”金融规划研究白皮书

《2025清华五道口:“十五五”金融规划研究白皮书》的核心内容主要包括以下几个方面: 一、五年金融规划的重要功能与作用 凝聚共识:五年金融规划是国家金融发展的前瞻性谋划和战略性安排,通过广泛听取社会各界意见,凝…

微信小程序实战案例 - 餐馆点餐系统 阶段 4 - 订单列表 状态

✅ 阶段 4 – 订单列表 & 状态 目标 展示用户「我的订单」列表支持状态筛选(全部 / 待处理 / 已完成)支持分页加载和实时刷新使用原生组件编写 ✅ 1. 页面结构:文件结构 pages/orders/├─ index.json├─ index.wxml├─ index.js└─…

如何为C++实习做准备?

博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1…

Cesium.js(6):Cesium相机系统

Camera表示观察场景的视角。通过操作摄像机,可以控制视图的位置、方向和角度。 帮助文档:Camera - Cesium Documentation 1 setView setView 方法允许你指定相机的目标位置和姿态。你可以通过 Cartesian3 对象来指定目标位置,并通过 orien…

AI 代码生成工具如何突破 Java 单元测试效能天花板?

一、传统单元测试的四大痛点 时间黑洞:根据 JetBrains 调研,Java 开发者平均花费 35% 时间编写测试代码覆盖盲区:手工测试覆盖率普遍低于 60%(Jacoco 全球统计数据)维护困境:业务代码变更导致 38% 的测试用…

客户端负载均衡与服务器端负载均衡详解

客户端负载均衡与服务器端负载均衡详解 1. 客户端负载均衡(Client-Side Load Balancing) 核心概念 定义:负载均衡逻辑在客户端实现,客户端主动选择目标服务实例。典型场景:微服务内部调用(如Spring Cloud…

基于springboot的“流浪动物管理系统”的设计与实现(源码+数据库+文档+PPT)

基于springboot的“流浪动物管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:springboot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…

爬虫解决debbugger之替换文件

鼠鼠上次做一个网站的时候,遇到的debbugger问题,是通过打断点然后编辑断点解决的,现在鼠鼠又学会了一个新的技能 首先需要大家下载一个reres的插件,这里最好用谷歌浏览器 先请大家看看案例国家水质自动综合监管平台 这里我们只…

奇怪的电梯——DFS算法

题目 题解 每到一层楼都面临了两种选择:上还是下?因此我们可以定义一个布尔数组用来记录选择。 终止条件其实也明显,要么到了B层,要么没有找到楼层。 如果找到了,选择一个步骤少的方式。又怎么表示没有找到楼层&…

Open GL ES-> 工厂设计模式包装 SurfaceView + 自定义EGL的OpenGL ES 渲染框架

XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.EGLSurfaceView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"…

深入解析多表联查(MySQL)

前言 在面试中以及实际开发中&#xff0c;多表联查是每个程序员必备技能&#xff0c;下文通过最简单的学生表和课程表的实例帮大家最快入门多表联查技能。 建立数据表 1. 学生表&#xff08;students&#xff09; 创建学生表 CREATE TABLE students (student_id INT AUTO_…

宇视设备视频平台EasyCVR打造智慧酒店安防体系,筑牢安全防线

一、需求背景 酒店作为人员流动频繁的场所&#xff0c;对安全保障与隐私保护有着极高的要求。为切实维护酒店内部公共区域的安全秩序&#xff0c;24小时不间断视频监控成为必要举措。通常情况下&#xff0c;酒店需在本地部署视频监控系统以供查看&#xff0c;部分连锁酒店还希…