• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • doublewrite缓冲区

    doublewrite缓冲区是系统表空间中的存储区域,在其中InnoDB写入从缓冲池中刷新的页面,然后再将它们写入数据文件中的适当位置。仅在刷新页面并将其写入doublewrite缓冲区之后,才将页面InnoDB写入其正确位置。如果在页面写入过程中发生操作系统,存储子系统或mysqld进程崩溃,则InnoDB可以在崩溃恢复期间从doublewrite缓冲区中找到页面的良好副本。

    尽管数据总是被写入两次,但双写缓冲区不需要两倍的I / O开销或两倍的I / O操作。只需一次fsync()调用操作系统,就可以将数据作为大的连续块写入双写缓冲区。

    在大多数情况下,默认情况下会启用双写缓冲区。要禁用双写缓冲区,请设置innodb_doublewrite为0。

    如果系统表空间文件(ibdata文件)位于支持原子写的Fusion-io设备上,则自动禁用双写缓冲,并且Fusion-io原子写用于所有数据文件。由于doublewrite缓冲区设置是全局的,因此,对于非Fusion-io硬件上驻留的数据文件,也禁用doublewrite缓冲。此功能仅在Fusion-io硬件上受支持,并且仅在Linux上的Fusion-io NVMFS中启用。要充分利用此功能,建议innodb_flush_method设置O_DIRECT为。