10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 260.6 kb
手册页(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

15.6.4 Doublewrite Buffer

doublewrite缓冲区是一个存储区域InnoDB属性中的适当位置之前,先写入从缓冲池刷新的页InnoDB数据文件。是否存在操作系统、存储子系统等异常情况mysqld进程在页面中间退出,写入,InnoDB可以在崩溃恢复期间从doublewrite缓冲区中找到一个良好的页面副本。

虽然数据写入两次,但doublewrite缓冲区并不需要两倍的I/O开销或两倍的I/O操作。数据以一个大的顺序块写入doublewrite缓冲区fsync ()调用操作系统(除非innodb_flush_method设置为O_DIRECT_NO_FSYNC).

在MySQL 8.0.20之前,doublewrite缓冲区的存储区域位于InnoDB系统表空间。从MySQL 8.0.20开始,doublewrite缓冲区存储区域位于doublewrite文件中。

为doublewrite缓冲区配置提供了以下变量:

  • innodb_doublewrite

    innodb_doublewrite变量控制是否启用doublwrite缓冲区。在大多数情况下默认启用。要禁用doublewrite缓冲区,请设置innodb_doublewrite设置为0或启动服务器——skip-innodb-doublewrite.如果您更关心性能而不是数据完整性,您可以考虑禁用doublewrite缓冲区,例如,在执行基准测试时可能会出现这种情况。

    如果doublewrite缓冲区位于支持原子写的Fusion-io设备上,则会自动关闭doublewrite缓冲区,并使用Fusion-io原子写执行数据文件写操作。但是,要注意innodb_doublewrite设置是全局的。当禁用doublewrite缓冲区时,所有数据文件(包括不在Fusion-io硬件上的数据文件)都将禁用doublewrite缓冲区。该特性仅在Fusion-io硬件上支持,且仅在Linux下的Fusion-io NVMFS上启用。为了充分利用这一特性,一个innodb_flush_method设置O_DIRECT建议。

  • innodb_doublewrite_dir

    innodb_doublewrite_dirvariable(在MySQL 8.0.20中引入)定义了其中的目录InnoDB创建doublewrite文件。如果未指定目录,则在目录中创建doublewrite文件innodb_data_home_dir目录,如果未指定,默认为数据目录。

    哈希符号“#”会自动添加到指定的目录名前,以避免与模式名冲突。然而,如果a '。”、“#”。或者在目录名中显式地指定了'/'前缀,哈希符号'#'没有作为目录名的前缀。

    理想情况下,doublewrite目录应该放在可用的最快的存储介质上。

  • innodb_doublewrite_files

    innodb_doublewrite_files变量定义doublewrite文件的数量。默认情况下,为每个缓冲池实例创建两个doublewrite文件:一个flush列表doublewrite文件和一个LRU列表doublewrite文件。

    刷新列表双写文件用于从缓冲池刷新列表刷新的页面。刷新列表双写文件的默认大小为InnoDB页面大小* doublewrite页面字节。

    LRU列表双写文件用于从缓冲池LRU列表刷新页面。它还包含用于单页刷新的插槽。LRU列表双写文件的默认大小是InnoDB页大小* (doublewrite页+(512 /缓冲池实例数)),其中512是为单页刷新预留的插槽总数。

    至少有两个doublewrite文件。doublewrite文件的最大数量是缓冲池实例数量的两倍。缓冲池实例的数量由innodb_buffer_pool_instances变量)。

    Doublewrite文件名的格式如下:# ib_页大小_file_number.dblwr.例如,为MySQL实例创建以下doublewrite文件InnoDB页面大小为16KB和一个缓冲池:

    # ib_16384_0。dblwr # ib_16384_1.dblwr

    innodb_doublewrite_files变量用于高级性能调优。默认设置应该适合大多数用户。

  • innodb_doublewrite_pages

    innodb_doublewrite_pagesvariable(在MySQL 8.0.20中引入)控制每个线程的最大双写页面数。如果没有指定值,innodb_doublewrite_pages设置为innodb_write_io_threads价值。此变量用于高级性能调优。默认值应该适合大多数用户。

  • innodb_doublewrite_batch_size

    innodb_doublewrite_batch_sizevariable(在MySQL 8.0.20中引入的)控制了批写doublewrite页面的数量。此变量用于高级性能调优。默认值应该适合大多数用户。

从MySQL 8.0.23开始,InnoDB自动加密属于加密表空间的doublewrite文件页(参见第15.13节“InnoDB静态数据加密”).同样,属于页压缩表空间的doublewrite文件页也被压缩。因此,doublewrite文件可以包含不同的页类型,包括未加密和未压缩的页、加密的页、压缩的页以及既加密又压缩的页。