Binlog 日志模块
redo log 是 InnoDB 引擎特有的日志,MySQL 的 Server 层也有自己的日志,称为 Binlog(归档日志)。
两种日志的不同点:
- redo log 是 InnoDB 引擎特有的日志,binlog 日志是MySQL 的 Server 层实现的,所有引擎都可以使用。
- redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2 这一行c字段加1”。
- redo log 是循环写的,空间固定会用完;binlog 是追加写入的,不会覆盖以前的日志。
update 语句执行流程图
两阶段提交
上面的流程图体现了日志的两阶段提交。为什么要有“两阶段提交”呢?这是为了让两份日志之间的逻辑一致。