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数据库的高可用性和数据一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值