考虑以下优化重做日志的指导方针:
让你的重做日志文件变大,甚至像缓冲池.当
InnoDB
已写满重做日志文件,它必须将修改后的缓冲池内容写入磁盘检查点.小的重做日志文件会导致许多不必要的磁盘写入。虽然以前大的重做日志文件会导致很长的恢复时间,但是现在恢复速度更快了,你可以放心地使用大的重做日志文件。重做日志文件的大小和数量使用
innodb_log_file_size
而且innodb_log_files_in_group
配置选项。有关修改现有重做日志文件配置的信息,请参见修改InnoDB重做日志文件的数量或大小.考虑增加的大小日志缓冲区.日志缓冲区越大,日志缓冲区越大交易运行时不需要在事务之前将日志写入磁盘提交.因此,如果您有更新、插入或删除许多行的事务,那么增大日志缓冲区可以节省磁盘I/O。日志缓冲区大小使用
innodb_log_buffer_size
配置选项。配置
innodb_log_write_ahead_size
避免的配置选项”read-on-write”.这个选项定义重做日志的预写块大小。集innodb_log_write_ahead_size
以匹配操作系统或文件系统缓存块大小。当重做日志的预写块大小与操作系统或文件系统缓存块大小不匹配,导致重做日志块没有完全缓存到操作系统或文件系统时,就会发生写时读。的有效值
innodb_log_write_ahead_size
是的倍数InnoDB
日志文件块大小(2n).最小值为InnoDB
日志文件块大小(512)。当指定了最小值时,不会发生预写。最大值等于innodb_page_size
价值。的值innodb_log_write_ahead_size
它比innodb_page_size
值时,innodb_log_write_ahead_size
设置被截断为innodb_page_size
价值。设置
innodb_log_write_ahead_size
与操作系统或文件系统缓存块大小相关的值过低会导致读写操作。设置过高的值可能会对fsync
由于同时写入几个块,日志文件写入的性能。