Binlog、Redo log、Undo log的区别

一、binlog和redo log的区别

特性binlogredo log
记录对象记录的是 MySQL 数据库的数据变更和结构变更操作记录的是 InnoDB 存储引擎的数据页变化,针对的是具体的存储引擎层面。
记录内容记录的是事务的逻辑操作,例如 SQL 语句(语句型 binlog)或行变化(行型 binlog)。记录的是数据页的物理变化,例如某个页的某个偏移量的修改。
记录时间在事务提交后写入(即事务提交完成后才写入 binlog)。在事务执行过程中写入(即事务提交前会写入 redo log)。
记录方式写到一定大小会切换下一个,不会覆盖之前的日志。依次往几个Redo log文件中写入,如果最后一个文件写满了,又会回到第一个Redo log中写入。
用途备份,复制保证事务的持久性

 二、Redo log和undo log的区别

对比方向undo logredo log
记录内容记录事务修改前的旧值(用于回滚)记录数据页的变更内容(用于恢复)
写入顺序随机读写顺序写
作用帮助事务回滚以及实现MVCC用保证事务的持久性

三、更新数据时,各种日志的写入时机

举例:DELETE FROM t1 WHERE id=1

阶段undo logredo logbinlog
事务开始开始记录事务的旧值,但尚未写入。未写入。未写入。
事务执行阶段写入 undo log,记录 id=1 行的旧值。未写入。未写入。
事务提交判断undo log 已写入,记录旧值。未写入。未写入。
事务提交undo log 已写入,记录旧值。写入 redo log,记录 id=1 行被删除后的物理变化。未写入(binlog 在事务提交后写入)。
事务提交后undo log 已写入,记录旧值。redo log 已写入,记录物理变化。写入 binlog,记录 DELETE FROM t1 WHERE id=1 的逻辑操作
事务结束(成功)undo log 已写入,记录旧值。redo log 已写入,记录物理变化。binlog 已写入,记录逻辑操作。
事务回滚(失败)使用 undo log 回滚,恢复 id=1 行的旧值。未写入(redo log 只在事务成功提交时写入)。未写入(binlog 只在事务成功提交后写入)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值