10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.2 mb
PDF (A4)- 41.3 mb
PDF (RPM)- 39.5 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.3 mb
HTML下载(RPM)- 7.8 mb
手册(TGZ)- 260.6 kb
手册(Zip)- 371.8 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

8.5.4优化InnoDB重做日志

考虑以下优化重做日志的指导方针:

  • 让你的重做日志文件变大,甚至像缓冲池.当InnoDB已写满重做日志文件,它必须将修改后的缓冲池内容写入磁盘检查点.小的重做日志文件会导致许多不必要的磁盘写入。虽然以前大的重做日志文件会导致很长的恢复时间,但是现在恢复速度更快了,你可以放心地使用大的重做日志文件。

    重做日志文件的大小和数量使用innodb_log_file_size而且innodb_log_files_in_group配置选项。有关修改现有重做日志文件配置的信息,请参见修改重做日志文件的数量或大小

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

  • 配置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由于同时写入几个块,日志文件写入的性能。

  • MySQL 8.0.11引入了专门的日志写入线程,用于将重做日志记录从日志缓冲区写入系统缓冲区,并将系统缓冲区刷新到重做日志文件。以前,每个用户线程负责这些任务。从MySQL 8.0.22开始,您可以使用innodb_log_writer_threads变量。专用日志写入线程可以提高高并发性系统的性能,但对于低并发性系统,禁用专用日志写入线程可以提供更好的性能。

  • 优化等待刷新重做的用户线程对自旋延迟的使用。自旋延迟有助于减少延迟。在并发性较低的时期,减少延迟可能不是优先考虑的问题,并且在这些时期避免使用自旋延迟可能会减少能源消耗。在高并发性期间,您可能希望避免在自旋延迟上消耗处理能力,以便将其用于其他工作。以下系统变量允许设置高和低水位值,为使用自旋延迟定义边界。

    • innodb_log_wait_for_flush_spin_hwm:定义用户线程在等待刷新重做时不再旋转的最大平均日志刷新时间。缺省值是400微秒。

    • innodb_log_spin_cpu_abs_lwm:定义在等待刷新重做时用户线程不再旋转的最小CPU使用量。该值表示为CPU内核使用率的总和。例如,默认值“80”为单个CPU核的80%。在使用多核处理器的系统上,值150表示一个CPU核的100%使用率加上第二个CPU核的50%使用率。

    • innodb_log_spin_cpu_pct_hwm:定义在等待刷新重做时用户线程不再旋转的最大CPU使用量。该值表示为所有CPU核的处理能力总和的百分比。默认值为50%。例如,在拥有4个CPU核的服务器上,两个CPU核的100%使用率是CPU处理能力总和的50%。

      innodb_log_spin_cpu_pct_hwm配置选项尊重处理器关联性。例如,如果服务器有48个内核,但是mysqld进程被固定在4个CPU核上,其他44个CPU核被忽略。