binlog
- 存储着每条变更的 SQL 语句(update/delete/insert/truncate/create)
- 主从结构复制数据
- 恢复数据
redo log
当 mysql 在执行 update user set age = 18 where name ='小白'
时,会首先根据 小白
去找到页,让好找到数据,把数据加载到内存中
接着在内存中把改行数据的 age 改为 18,接着刷入磁盘
但是如果此时数据库突然挂了,那么这个修改就丢失了
所以在真实的情况时,把数据在内存中修改后先写入到 redo log 文件中,然后在把数据保存在页中,这样就算数据库突然挂了,下一次重启时可以根据 redo log 恢复操作
- redo log 是顺序写入的,所以写入的速度很快
- 并且 redo log 不能用于来恢复全部的数据,因为当某一次操作时将内存的数据成功刷入到页中写入磁盘,那么与之对应的 redo log 就无用了
相当于是一次性的
binlog 和 redo log 的区别
- binlog
- 记录的是 sql 语句,可以说是记录逻辑变化
- 事务提交的时候才产生
- redo log
- 记录的是数据的物理变化,某个值由 xx 变为了 yy
- 事务开始的时候产生
- 可以说是先写 redo log 然后再写 binlog,只有当两者都成功这次事务才算完成
undo log
- 作用
- 回滚
- 多版本控制
- undo log 会反向记录当前操作的 sql,比如 insert 数据时,会记录 delet
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于