InnoDB可能出现部分失效的问题(比如缓冲池往磁盘刷新脏页时写了部分就宕机了)。一般是通过redo log来恢复,但是redo log记录的是对页的物理操作记录,而不是最新页的数据记录,如果页本身发生损坏了,redo log没用

double write就是在写之前存一个页的副本,doublewrite由两部分组成:

内存中的double write buffer,2MB

磁盘共享表空间连续的128个页,大小2MB

在对缓冲池的脏页进行刷新时,不直接写磁盘,先通过memcpy把脏页复制到double write buffer,再分两次,每次1MB顺序地写入共享表空间的物理磁盘,然后调用fsync函数同步磁盘,避免缓冲写带来的问题

InnoDB的几个关键特性-Double Write(两次写)_缓冲池