doc: 阅读文档
This commit is contained in:
@@ -139,7 +139,7 @@ log buffer由log block所组成,可以将log buffer看作是log block的数组
|
||||
`LOG_BLOCK_FIRST_REC_GROUP`占用2个字节,表示log block中第一个日志所处的偏移量。
|
||||
|
||||
`LOG_BLOCK-FIRST_REC_GROUP`的取值可能存在如下场景:
|
||||
- 该值大小和`LOG_BLOCK_HDR_DATA_LEN`相同,则代表当前block中`不包含新的日志`
|
||||
- 该值大小和`LOG_BLOCK_HDR_DATA_LEN`相同,则代表当前block中`不包含新的日志`(即当前block中存储的存储的全是上一block中record的后续部分)
|
||||
|
||||
下图表示`事务T1的重做日志占用762字节`,`事务T2的重做日志占用100字节`的场景。
|
||||
|
||||
@@ -157,6 +157,20 @@ LSN(log sequence number)为一个`全局唯一且单调递增的64位数字
|
||||
|
||||
CHECKPOINT则是一个LSN值,同样为64位整数,代表位于`CHECKPOINT`之前所有的修改已经被持久化到数据库中,`位于CHECKPOINT之前的redo log内容可以被安全的覆盖`。
|
||||
|
||||
##### log block tailer
|
||||
log block tailer中仅由一个部分组成,即`LOG_BLOCK_TRL_NO`,其值和`LOG_BLOCK_HDR_NO`相同。
|
||||
|
||||
#### log group
|
||||
log group被称为重做日志组,其中包含多个redo log文件,innodb中只有一个log group。
|
||||
|
||||
log group只是一个逻辑上的概念,由多个redo log file组成。log group中每个redo log file大小相同。redo log file中存储的是redo log block,`在innodb引擎运行过程中,会将redo log buffer中的log block刷新到磁盘文件中。`
|
||||
|
||||
##### redo log buffer刷新到磁盘中的时机
|
||||
redo log buffer会在如下时机将log block刷新到磁盘中:
|
||||
- 事务提交时
|
||||
- log buffer中有一半的内存空间已经被使用时
|
||||
- log checkpoint时
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user