• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 优化InnoDB配置变量

    与始终保持接近满负荷运行或遇到高峰活动的服务器相比,不同的设置最适合负载轻且可预测的服务器。

    由于InnoDB存储引擎会自动执行许多优化,因此许多性能调整任务涉及监视以确保数据库运行良好,并在性能下降时更改配置选项。有关详细性能监视的信息,请参见“ InnoDB与MySQL性能模式的集成”InnoDB

    您可以执行的主要配置步骤包括:

    • 控制数据更改操作的类型,以InnoDB缓存更改后的数据,以避免频繁的小磁盘写入。请参阅配置变更缓冲。因为默认设置是缓冲所有类型的数据更改操作,所以仅在需要减少缓冲量时才更改此设置。
    • 使用该innodb_adaptive_hash_index选项打开和关闭自适应哈希索引功能。有关更多信息,请参见“自适应哈希索引”。您可以在异常活动期间更改此设置,然后将其恢复为原始设置。
    • InnoDB如果上下文切换是瓶颈,请设置对处理的并发线程数的限制。请参见“配置InnoDB线程并发”。
    • 控制InnoDB与其预读操作有关的预取量。当系统具有未使用的I / O容量时,更多的预读可以提高查询的性能。过多的预读可能会导致负载较重的系统上的性能定期下降。请参见“配置InnoDB缓冲池预取(预读)”。
    • 如果您具有默认值未完全利用的高端I / O子系统,则增加用于读取或写入操作的后台线程的数量。请参见“配置后台InnoDB I / O线程数”。
    • 控制InnoDB在后台执行多少I / O。请参见“配置InnoDB I / O容量”。如果观察到性能周期性下降,则可以缩减此设置。
    • 控制确定何时InnoDB执行某些类型的后台写入的算法。请参见“配置缓冲池刷新”。该算法适用于某些类型的工作负载,但不适用于其他类型的工作负载,因此,如果观察到性能周期性下降,则可以禁用此功能。
    • 利用多核处理器及其高速缓存存储器配置来最大程度地减少上下文切换中的延迟。请参见“配置自旋锁轮询”。
    • 防止诸如表扫描之类的一次性操作干扰存储在InnoDB缓冲区高速缓存中的频繁访问的数据。请参见“使缓冲池扫描具有抵抗力”。
    • 将日志文件调整为对可靠性和崩溃恢复有意义的大小。InnoDB日志文件通常保持较小,以避免崩溃后启动时间过长。MySQL 5.5中引入的优化加快了崩溃恢复过程的某些步骤。特别是,由于改进了内存管理算法,因此扫描重做日志和应用重做日志的速度更快。如果您人为地减少了日志文件的大小以避免启动时间过长,现在可以考虑增加日志文件的大小,以减少由于重做日志记录的回收而发生的I / O。
    • InnoDB缓冲池配置实例的大小和数量,这对于具有数千兆字节缓冲池的系统尤为重要。请参见“配置多个缓冲池实例”。
    • 增加并发事务的最大数量,从而极大地提高了最繁忙数据库的可伸缩性。请参见“撤消日志”。
    • 将清除操作(一种垃圾收集)移动到后台线程中。请参见“清除InnoDB配置”。为了有效地测量此设置的结果,请首先调整其他与I / O相关的配置和与线程相关的配置设置。
    • 减少InnoDB在并发线程之间进行的切换量,以使繁忙的服务器上的SQL操作不会排队并形成“流量阻塞”。为该innodb_thread_concurrency选项设置一个值,对于高功率的现代系统,最多可以设置为 32。增加innodb_concurrency_tickets选项的值,通常到5000左右。选项的这种组合设置了线程数量的上限InnoDB进程可以随时进行处理,并允许每个线程在被换出之前做大量工作,从而使等待线程的数量保持较低水平,并且无需过多的上下文切换即可完成操作。