MySQL 5.7版本说明
doublewrite缓冲区是一个存储区域InnoDB
属性中的适当位置之前,先写入从缓冲池刷新的页InnoDB
数据文件。是否存在操作系统、存储子系统等异常情况mysqld进程在页面中间退出,写入,InnoDB
可以在崩溃恢复期间从doublewrite缓冲区中找到一个良好的页面副本。
虽然数据写入两次,但doublewrite缓冲区并不需要两倍的I/O开销或两倍的I/O操作。数据以一个大的顺序块写入doublewrite缓冲区fsync ()
调用操作系统(除非innodb_flush_method
设置为O_DIRECT_NO_FSYNC
).
在大多数情况下,doublewrite缓冲区默认是启用的。要禁用doublewrite缓冲区,请设置innodb_doublewrite
为0。
如果系统表空间文件(”ibdata文件”)位于支持原子写的Fusion-io设备上,doublewrite缓冲区将自动禁用,所有数据文件将使用Fusion-io原子写。由于doublewrite缓冲区设置是全局的,因此对于驻留在非fusion -io硬件上的数据文件也禁用doublewrite缓冲区。该特性仅在Fusion-io硬件上支持,且仅在Linux下的Fusion-io NVMFS上启用。为了充分利用这一特性,一个innodb_flush_method
设置O_DIRECT
建议。