doc: 阅读innodb文档
This commit is contained in:
@@ -333,7 +333,7 @@ redo log类似循环队列,checkpoint之前的位置都已经被刷新到磁
|
|||||||
### LSN
|
### LSN
|
||||||
LSN(log sequence number)为日志序列号, 是一个全局单调递增的64位整数,`类似于innodb内部的逻辑时钟),是全局唯一的`。
|
LSN(log sequence number)为日志序列号, 是一个全局单调递增的64位整数,`类似于innodb内部的逻辑时钟),是全局唯一的`。
|
||||||
|
|
||||||
LSN随着redo log的不断产生而单调递增。当发生数据的修改时,会生成redo log,此时LSN也会增加。
|
LSN代表写入redo log的字节数总量,随着redo log的不断产生而单调递增。当发生数据的修改时,会生成redo log,此时LSN也会增加。
|
||||||
|
|
||||||
### Fuzzy Checkpoint
|
### Fuzzy Checkpoint
|
||||||
innodb中实现了fuzzy checkpoint机制,会基于小批量(small batches)来将buffer pool中的页刷新到磁盘中。`并不需要在一次batch中将buffer pool中的页都刷新到磁盘中,否则checkpoint过程会中断用户的sql语句处理`。
|
innodb中实现了fuzzy checkpoint机制,会基于小批量(small batches)来将buffer pool中的页刷新到磁盘中。`并不需要在一次batch中将buffer pool中的页都刷新到磁盘中,否则checkpoint过程会中断用户的sql语句处理`。
|
||||||
|
|||||||
@@ -169,8 +169,26 @@ log group只是一个逻辑上的概念,由多个redo log file组成。log gro
|
|||||||
redo log buffer会在如下时机将log block刷新到磁盘中:
|
redo log buffer会在如下时机将log block刷新到磁盘中:
|
||||||
- 事务提交时
|
- 事务提交时
|
||||||
- log buffer中有一半的内存空间已经被使用时
|
- 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