MySQL技术内幕InnoDB存储引擎 - 关键特性 - DoubleWrite(双写)

 

redo log 能修复 部分写失效(partial page write) 这种情况吗?

不能!

 

 doublewrite架构图

 

脏页刷新时的doublewrite步骤

脏页flush到磁盘文件时:

1、先通过memcpy方法将该脏页复制到 doublewrite buffer中。

2、将doublewrite buffer中的数据分两次(一次1M)顺序的写入共享表空间的doublewrite中.

3、上面操作只是写入oscache,为了可靠性,马上调用fsync将数据flush到磁盘(doublewrite的文件写入是顺序写,所以效率高)。

4、完成doublewrite文件写入后,接下来将doublewrite buffer中的数据对应到各个表空间文件进行写入操作(离散写)。

 

doublewrite 压力判断

 

posted on 2020-02-02 18:41  HB1  阅读(419)  评论(0)    收藏  举报

导航