乐趣区

关于mysql:mysqlredo-log-以及-undo-log

1. redo log

简述: 引擎层的 redo log 是为了防止每一次更新操作都去查找记录再批改记录 (随机读写), 采纳 WAL 技术(Write-Ahead Logging 写前日志) 来转换成程序读写;

更新数据时,innoDB 先把记录写到 redo log 中, 并更新内存, 这时便能够返回后果. 同时在 InnoDB 闲暇的时候将操作记录更新到磁盘外面.

InnoDB 的 redo log 是固定大小的,比方能够配置为一组 4 个文件,每个文件的大小是 1GB,那么总共就能够记录 4GB 的操作。从头开始写,写到开端就又回到结尾循环写,如上面这个图所示。

write pos 是以后记录的地位,一边写一边后移
checkpoint 是以后要擦除的地位,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件。
write pos 和 checkpoint 之间是可记录闲暇空间, 当 write pos 追上 checkpoint 时, 须要暂停更新并将数据写入磁盘, 而后推动下 checkpoint

2. binlog

简述: Server 层的 binlog 记录的是原始逻辑的语句, 属于归档日志

退出移动版