binlog、redolog和undolog区别?

在 MySQL 数据库中,binlog、redo log 和 undo log 皆属于日志类型文件,然而,它们的功能与实现方式存在着微妙的差异。

binlog 主要用于数据库的数据备份、崩溃恢复以及数据复制等操作;而 redo log 和 undo log 则主要用于事务管理,分别记录了数据修改操作和回滚操作的细节。redo log 用于数据恢复,而 undo log 则用于回滚事务。

崩溃恢复是指在数据库系统因各种原因而发生崩溃或非正常关闭后,通过一系列机制和步骤来将数据库恢复到一个一致性和可用的状态。这是数据库管理系统的重要功能之一,它确保在异常情况下数据库能够自动恢复,从而避免数据丢失或数据库状态不一致的问题。

在 MySQL 中,redo log 和 undo log 仅适用于 InnoDB 存储引擎,因为其支持事务特性,而不适用于其他存储引擎如 MyISAM 等。而 binlog 则适用于所有存储引擎。

binlog 是 MySQL 用于记录数据库中所有 DDL 语句和 DML 语句的二进制日志。它记录了对数据库结构和数据的所有修改操作,例如 INSERT、UPDATE 和 DELETE 等。binlog 主要用于数据库的数据备份、灾难恢复和数据复制等操作。binlog 的格式包括基于语句的格式和基于行的格式。

Redo Log 是 MySQL 用于实现崩溃恢复和数据持久性的机制 。在事务进行过程中,MySQL 会将事务所做的修改记录到 Redo Log 中。当系统发生崩溃或异常情况时,MySQL 利用 Redo Log 中的记录信息进行恢复操作,将事务所做的修改持久化到磁盘中。

Undo Log 用于在事务回滚或系统崩溃时撤销(回滚)事务所做的修改 。当一个事务执行时,MySQL 会将事务修改前的数据记录到 Undo Log 中。如果事务需要回滚,则会从 Undo Log 中找到相应的记录来撤销事务所做的修改。此外,Undo Log 还支持 MVCC(多版本并发控制)机制,用于在并发事务执行时提供一定的隔离性

很多人不知道该怎么记忆,可以参考网友的建议,可以这么记忆:

  1. undo 就是回退的意思,就跟在文本编辑器里面有一个 undo 按钮一样,你编辑的东西,按一下这个 undo 按钮就回退到上一个版本了。
  2. redo 是"re"+"do","re"就是重来一次的意思,"do"就是做的意思。所以连在一起,就是重新再做一遍,也就是重新再执行一次 sql。那么什么时候需要重新再执行一次 sql 呢?执行的数据丢了嘛,自然就需要重新执行一次。
  3. bin 就是"binary"的缩写,"binary"就是二进制的意思,可以引申为"原始"的意思,所以 bin log 就是最全最原始的东西,里面包含了一切,所以可以用来做备份,有了它,就有了一切。

undolog 和 redolog 在功能和记录内容上有着明显的区别:

  • 目的:Redo log 的目的是确保事务的持久性,主要用于崩溃恢复。而 Undo log 的目的是确保事务的原子性和一致性,主要用于事务回滚。
  • 记录内容:Redo Log 记录了事务的所有数据更改,不仅记录了数据更改的最终结果,还记录了实现这些更改的具体操作。而 Undo log 记录的是事务执行前的内容,即事务所做的修改前的状态。

如有问题,欢迎微信搜索【码上遇见你】。

免费的Chat GPT可微信搜索【AI贝塔】进行体验,无限使用。

好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。

相关推荐
玉宇夕落12 小时前
别再死磕 Prompt 了!上下文工程 (Context Engineering) 的简单学习
后端
ZzT12 小时前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
用户342323237631712 小时前
定时器与 PWM 输出详解
后端
PBitW13 小时前
GPT训练我的第四天,被打惨了!!!😭😭😭
前端·javascript·面试
Jason_chen13 小时前
Linux 6.2 CAN/CANFD机制详解
后端
Apifox14 小时前
Apifox 6 月更新|Apifox CLI 全面升级、导入导出优化、OAuth 2.0 支持自动刷新令牌
前端·后端·测试
悟空瞎说14 小时前
NestJS 接口设计避坑:摒弃万能用户更新接口,落地单一职责与最小权限原则
后端·nestjs
smallyoung14 小时前
Spring AI 2.0 VectorStore实战:从原理到RAG落地
人工智能·后端
jiayou6414 小时前
KingbaseES 表级与列级加密完全指南
数据库·后端
青丘14 小时前
Spring AI整合Milvus向量数据库实战
后端