doc: 阅读innodb文档
This commit is contained in:
@@ -171,6 +171,15 @@ redo log buffer会在如下时机将log block刷新到磁盘中:
|
|||||||
- log buffer中有一半的内存空间已经被使用时
|
- log buffer中有一半的内存空间已经被使用时
|
||||||
- log checkpoint时(checkpoint时会导致脏页被刷新到磁盘上,而WAL要求脏页刷新前刷新redo log buffer)
|
- log checkpoint时(checkpoint时会导致脏页被刷新到磁盘上,而WAL要求脏页刷新前刷新redo log buffer)
|
||||||
|
|
||||||
|
##### WAL
|
||||||
|
`write-ahead logging`是一种为database系统提供`原子性`与`持久性`的技术。
|
||||||
|
|
||||||
|
`write ahead log`是`append-only`的辅助磁盘存储结构,用于crash recovery和transaction recovery。
|
||||||
|
|
||||||
|
在使用`WAL`的系统中,在所有的changes被应用到数据库之前,要求changes都被写入到log中。
|
||||||
|
|
||||||
|
所以,在innodb中,脏页被刷新到磁盘之前,脏页对应的`newest_lsn`之前的redo log都必须被刷新到磁盘中。`redo log file中最新的lsn必须大于磁盘页文件中最大的lsn`。
|
||||||
|
|
||||||
在redo log buffer中的log block刷新到redo log file中时,其会追加(append)到redo log file的末尾。当redo log group中的一个文件被写满时,其会接着写入下一个redo log file,其行为称为`round-robin`。
|
在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内容如下:
|
在redo log group中的每个redo log file中,其前2KB(4个log block大小)均不用于存储log block,前2KB内容如下:
|
||||||
|
|||||||
Reference in New Issue
Block a user