一、事务日志(Transaction Log)

1、目的

用于保证DataBase的A、C、D特性:故障恢复的基础。

Transaction Log刷盘与事务提交关联,数据刷盘与Checkpoint机制关联。

Transaction T1 Log Comment
事务开始:⟨T1, start⟩
read(A, t); t←t×2;
write(A, t) ⟨T1, A, 16⟩ A’s new value is 16
read(B, t); t←t×2;
write(B, t) ⟨T1, B, 16⟩ B’s new value is 16
事务提交(TL刷盘):⟨T1, commit⟩ Transaction Log此时已经刷盘:
由当前事务刷盘,或由Transaction-Group中的其他Transaction顺带刷盘
output(A)
output(B) 数据刷盘:Checkpoint第二步 Data Page此时已经刷盘:
由当前事务刷盘,或由Transaction group中的其他Transaction顺带刷盘
事务结束:⟨T1, end⟩

事务提交包含两个阶段:修改内存中事务对应的信息,并将写入事务日志缓冲:undo log buffer、redo log buffer。

2、性质

(1)WAL(write-ahead-logging):Transaction Log日志刷盘先于数据刷盘;
(2)FLAC(force-log-at-commit):事务提交⟨Ti,commit⟩ 时,必须先将Transaction Log日志刷盘;
(3)数据刷盘可先于事务提交,也可后于事务提交;

3、日志分类

(1) Redo Log

  • 物理日志:数据页
  • 幂等

(2) Undo Log

  • 逻辑日志:行记录
  • 非幂等

二、其他日志

1、bin log
binlog 可以用来归档,也可以用来做主备同步