redo log和bin log
redo log和bin log
redo log(重做日志)
这是极客时间MySQL45讲 的个人总结笔记
redo log是InnoDB引擎特有的。
redo log 记录这个页做了什么改动。
InnoDB的redo log 是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB
,总共可以记录4个GB。从头开始写,写到末尾又回到开头循环写。

write pos是当前正在记录的位置,check point是当前正在擦除的位置。从write pos 到check point之间就是空隙部分。
有了redo log InnoDB可以保证即时数据库发生异常重启,之前的记录都不会丢,这个能力称为crash-safe
bin log(归档日志)
bin log 是Server层上的日志,bin log的Statement格式记录SQL语句,row格式记录行的内容。改动和改动后。
两者的区别
- redo log 是InnoDB引擎特有的;Binlog是MySQL的Server曾实现的,所有的引擎都可以实用。
- redo log 是物理日志,记录“在某个数据页上做了什么修改”;binlog是逻辑日志,记录这个语句的原始逻辑。比如给“ID=2这行的字段加1”
- redo log是循环写入,空间固定会用完;bin log 是追加写入,不会覆盖以前的日志。
两阶段提交
update语句执行流程

redo log和bin log都可以表示事务的提交状态,两阶段提交可以让两份日志两个状态之间的逻辑一致。
本文来自博客园,作者:依然学不会,转载请注明原文链接:https://www.cnblogs.com/yrxbh/p/15627038.html

浙公网安备 33010602011771号