Documentation Home
MySQL 8.0 参考手册  / 第8章优化  / 8.5 优化 InnoDB 表  /  8.5.4 优化 InnoDB 重做日志记录

8.5.4 优化 InnoDB 重做日志记录

考虑以下用于优化重做日志记录的准则:

  • 使您的重做日志文件变大,甚至与 缓冲池一样大。当 InnoDB重做日志文件写满时,它必须在 检查点将缓冲池的修改内容写入磁盘。小的重做日志文件会导致许多不必要的磁盘写入。尽管过去大的重做日志文件会导致恢复时间过长,但现在恢复速度要快得多,您可以自信地使用大的重做日志文件。

    重做日志文件的大小和数量使用innodb_log_file_sizeinnodb_log_files_in_group 配置选项进行配置。有关修改现有重做日志文件配置的信息,请参阅 更改 InnoDB 重做日志文件的数量或大小

  • 考虑增加 日志缓冲区的大小。大型日志缓冲区使大型 事务无需在事务提交之前将日志写入磁盘即可运行。因此,如果您有更新、插入或删除许多行的事务,那么增大日志缓冲区可以节省磁盘 I/O。innodb_log_buffer_size 使用配置选项 配置日志缓冲区大小 。

  • 配置 innodb_log_write_ahead_size 配置选项以避免read-on-write。此选项定义重做日志的预写块大小。设置 innodb_log_write_ahead_size 为匹配操作系统或文件系统缓存块大小。当由于重做日志的预写块大小与操作系统或文件系统缓存块大小不匹配而导致重做日志块未完全缓存到操作系统或文件系统时,会发生写时读。

    的有效值为 日志文件块大小 (2 n )innodb_log_write_ahead_size 的倍数。最小值为日志文件块大小 (512)。指定最小值时不会发生预写。最大值等于该 值。如果您为其指定的值 大于该 值,则该 设置将被截断为该 值。 InnoDBInnoDBinnodb_page_sizeinnodb_log_write_ahead_sizeinnodb_page_sizeinnodb_log_write_ahead_sizeinnodb_page_size

    innodb_log_write_ahead_size 相对于操作系统或文件系统缓存块大小将值 设置 得过低会导致写入时读取。fsync由于一次写入多个块, 将值设置得太高可能会对日志文件写入的性能产生轻微影响 。