doc: 阅读innodb文档

This commit is contained in:
asahi
2025-07-08 12:47:42 +08:00
parent 301102efe6
commit 3a808113ba
2 changed files with 20 additions and 2 deletions

View File

@@ -169,8 +169,26 @@ log group只是一个逻辑上的概念由多个redo log file组成。log gro
redo log buffer会在如下时机将log block刷新到磁盘中
- 事务提交时
- log buffer中有一半的内存空间已经被使用时
- log checkpoint时
- log checkpoint时(checkpoint时会导致脏页被刷新到磁盘上而WAL要求脏页刷新前刷新redo log buffer)
在redo log buffer中的log block刷新到redo log file中时其会追加append到redo log file的末尾。当redo log group中的一个文件被写满时其会接着写入下一个redo log file其行为称为`round-robin`
在redo log group中的每个redo log file中其前2KB4个log block大小均不用于存储log block前2KB内容如下
- 对于log group中的第一个redo log file前2KB用于存储如下内容下列每个部分大小均为一个block
- log file header
- checkpoint 1
-
- checkpoint2
- 对于log group中`非第一个redo log file`其仅保留开头2KB的空间但并不保存信息
#### redo log format
innodb中存储管理是基于页的故而redo log format格式也基于页。
##### redo log头部格式
redo log头部格式通常包含3部分
- `redo_log_type` 重做日志类型
- space 表空间id
- page_no 页的偏移量
之后redo log body部分根据重做日志类型的不同会存储不同内容。