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

mysql的binlog,redolog,undolog的区别

1. Binary Log (binlog)

作用

  • 记录所有的DDL(数据定义语言)和DML(数据操纵语言)操作,例如 CREATE TABLEALTER TABLEINSERTUPDATEDELETE 等。

  • 主要用于复制和数据恢复。

特点

  • 基于语句的复制:记录的是SQL语句。

  • 基于行的复制:记录的是行的变化。

  • 混合模式:可以设置为记录SQL语句或行的变化。

位置

  • 存储在磁盘上,通常位于MySQL的数据目录中。

2. Redo Log (重做日志)

作用

  • 确保事务的持久性,在事务提交时,所有的修改都会先写入重做日志,然后才写入磁盘上的数据文件。

  • 主要用于数据库的崩溃恢复。

特点

  • 物理日志:记录的是在数据页上的实际修改。

  • 循环使用:重做日志是循环使用的,有固定的起始和结束位置。

  • InnoDB引擎特有:是InnoDB存储引擎特有的。

位置

  • 存储在磁盘上,通常位于InnoDB的数据文件内部,如ibdata文件或ib_logfile

3. Undo Log (撤销日志)

作用

  • 支持事务的原子性,通过记录数据修改前的状态,可以在事务失败时回滚到事务开始前的状态。

  • 提供多版本并发控制(MVCC),允许读取事务看到一致性的数据快照。

特点

  • 逻辑日志:记录的是如何撤销之前的修改。

  • 循环使用:撤销日志也是循环使用的。

  • InnoDB引擎特有:同样是InnoDB存储引擎特有的。

位置

  • 存储在磁盘上,通常位于InnoDB的数据文件内部。

总结

  • Binlog 主要用于复制和数据恢复。

  • Redo Log 主要用于确保事务的持久性,特别是在系统崩溃后的恢复。

  • Undo Log 主要用于支持事务的原子性和实现MVCC,确保非阻塞的读取操作。

每种日志都是为了解决数据库在特定场景下的不同需求而设计的,它们的组合使用保证了MySQL数据库的高可用性和数据一致性。

相关文章:

  • Linux下 REEF3D及DIVEMesh 源码编译安装及使用
  • 【JavaWeb后端开发03】MySQL入门
  • 无需接线!虚幻引擎变量跨次元绑定的无线电奥秘
  • 转化率提升47%?亚马逊用户行为预测模型深度解读
  • 数据结构中的各种排序
  • 量子计算在金融领域的应用与展望
  • DeepSeek智能时空数据分析(二):3秒对话式搞定“等时圈”绘制
  • iOS 中的虚拟内存 (理解为什么需要虚拟内存)
  • npm -v npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。来看看永久修改执行策略!
  • 【手机】vivo手机应用声音分离方案
  • 【Spring】深入解析 Spring AOP:切面优先级、切点表达式、自定义注解并实现、Spring AOP 的几种实现方式
  • Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图
  • POSIX多线程,解锁高性能编程
  • 【iOS】Blocks学习
  • LangChain实现PDF中图表文本多模态数据向量化及RAG应用实战指南
  • 【身份证扫描件识别表格】如何识别大量身份证扫描件将内容导出保存到Excel表格,一次性处理多张身份证图片导出Excel表格,基于WPF和腾讯云的实现方案
  • Elasticsearch插件:IDEA中的Elasticsearch开发利器
  • LabVIEW 开发中数据滤波方式的选择
  • Ansys electronics安装多版本simulink打开s-function冲突解决方法
  • LlamaIndex 生成的本地索引文件和文件夹详解
  • 陕西一批干部任职公示:西安市未央、雁塔、阎良区委书记拟调整
  • 抗美援朝老战士、华西医院精神科学术带头人之一袁德基逝世
  • 心源性猝死正“猎杀”年轻人,这几招保命法则要学会
  • 从高铁到住房:“富足议程”能否拯救美国的进步主义?
  • 特朗普政府将对中国建造船只加征“港口费”,外交部:损人害己
  • 如此城市|漫步瑞金医院展览,艺术可以成为一种“社会雕塑”