当前位置: 首页 > article >正文

✅binlog、redolog和undolog区别?

典型回答

在MySQL数据库中,binlog、redolog和undolog都是日志类型文件,但它们各自的作用和实现方式有所不同。

binlog主要用来对数据库进行数据备份、崩溃恢复和数据复制等操作,redo log和undo log主要用于事务管理,记录的是数据修改操作和回滚操作。redolog用来做恢复,undolog用来做回滚。

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

在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记录的是事务执行前的内容。

http://www.kler.cn/a/469455.html

相关文章:

  • Go语言的数据库交互
  • 旷视科技C++面试题及参考答案
  • Go Ebiten随机迷宫生成示例
  • MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分
  • C++ static关键字(八股总结)
  • 【Java数据结构】二叉树
  • 深入理解 WebSocket:实时通信的基础
  • 鸿蒙应用开发(2)
  • Java字符编码与正则表达式深度解析
  • Web Services 简介
  • Colyseus 与 HTTP API 的集成
  • 我的Java-Web进阶--SpringMVC
  • Unity加载CSV配置表
  • 前端同步发送HTTP请求 Ajax、Fetch和Axios实现HTTP同步请求
  • YOLOv5部署到web端(flask+js简单易懂)
  • 第27天:Web开发-PHP应用原生语法全局变量数据接受身份验证变量覆盖任意上传
  • 谷歌浏览器的安全检测工具使用指南
  • 开源复刻 | Matlab实现蚁狮优化算法ALO优化Transformer-LSTM实现负荷数据回归预测
  • Sql中WITH的作用
  • pygame飞机大战
  • SpringMVC(二)原理
  • 【QT】C++线程安全的单例模板
  • Docker容器中Elasticsearch内存不足问题排查与解决方案
  • 【车载网络】BUSOFF状态简述和制造
  • Go语言的 的输入/输出流(I/O Streams)核心知识
  • LeetCode:700.二叉搜索树中的搜索