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 压力判断


浙公网安备 33010602011771号