doc: 阅读innodb文档
This commit is contained in:
@@ -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中,其前2KB(4个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部分,根据重做日志类型的不同会存储不同内容。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user