redo log和bin log

redo log和bin log

redo log(重做日志)

这是极客时间MySQL45讲 的个人总结笔记

redo log是InnoDB引擎特有的。

redo log 记录这个页做了什么改动。

InnoDB的redo log 是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB

,总共可以记录4个GB。从头开始写,写到末尾又回到开头循环写。
image

write pos是当前正在记录的位置,check point是当前正在擦除的位置。从write pos 到check point之间就是空隙部分。

有了redo log InnoDB可以保证即时数据库发生异常重启,之前的记录都不会丢,这个能力称为crash-safe

bin log(归档日志)

bin log 是Server层上的日志,bin log的Statement格式记录SQL语句,row格式记录行的内容。改动和改动后。

两者的区别

  1. redo log 是InnoDB引擎特有的;Binlog是MySQL的Server曾实现的,所有的引擎都可以实用。
  2. redo log 是物理日志,记录“在某个数据页上做了什么修改”;binlog是逻辑日志,记录这个语句的原始逻辑。比如给“ID=2这行的字段加1”
  3. redo log是循环写入,空间固定会用完;bin log 是追加写入,不会覆盖以前的日志。

两阶段提交

update语句执行流程
image

redo log和bin log都可以表示事务的提交状态,两阶段提交可以让两份日志两个状态之间的逻辑一致。

posted @ 2021-11-30 23:36  依然学不会  阅读(101)  评论(0)    收藏  举报