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