不同的设置最适用于负载较轻、可预测的服务器,而不是始终接近满负荷运行的服务器,或者遇到高活动高峰的服务器。
由于InnoDB存储引擎会自动执行许多优化,因此许多性能调优任务涉及监控以确保数据库运行良好,并在性能下降时更改配置选项。有关详细性能监视的信息,请参见 第15.16节“ InnoDB与MySQL性能模式的集成”InnoDB。
您可以执行的主要配置步骤包括:
- 控制数据更改操作的类型,以
InnoDB缓存更改后的数据,以避免频繁的小磁盘写入。请参阅 配置更改缓冲。因为默认是缓冲所有类型的数据更改操作,所以只有在需要减少缓冲量时才更改此设置。 - 使用该
innodb_adaptive_hash_index选项打开和关闭自适应哈希索引功能 。有关更多信息,请参阅第 15.5.3 节,“自适应哈希索引”。您可以在异常活动期间更改此设置,然后将其恢复为原始设置。 InnoDB如果上下文切换是瓶颈,则 对处理的并发线程数设置限制 。请参阅 第 15.8.4 节,“为 InnoDB 配置线程并发”。- 控制通过预
InnoDB读操作进行的预取数量 。当系统有未使用的 I/O 容量时,更多的预读可以提高查询的性能。过多的预读会导致重负载系统的性能周期性下降。请参阅 第 15.8.3.4 节,“配置 InnoDB 缓冲池预取(预读)”。 - 如果您的高端 I/O 子系统未被默认值充分利用,则增加用于读取或写入操作的后台线程数。请参阅 第 15.8.5 节,“配置后台 InnoDB I/O 线程数”。
- 控制
InnoDB在后台执行多少 I/O 。请参阅 第 15.8.7 节,“配置 InnoDB I/O 容量”。如果您观察到性能周期性下降,您可能会缩减此设置。 - 控制确定何时
InnoDB执行某些类型的后台写入的算法 。请参见 第 15.8.3.5 节,“配置缓冲池刷新”。该算法适用于某些类型的工作负载,但不适用于其他类型的工作负载,因此如果您观察到性能周期性下降,您可以禁用此功能。 - 利用多核处理器及其高速缓存存储器配置来最大程度地减少上下文切换中的延迟。请参见 第15.8.8节“配置自旋锁轮询”。
- 防止诸如表扫描之类的一次性操作干扰存储在
InnoDB缓冲区缓存中的频繁访问的数据 。请参见 第 15.8.3.3 节,“使缓冲池扫描抵抗”。 - 将日志文件调整到对可靠性和崩溃恢复有意义的大小。
InnoDB日志文件通常保持较小,以避免崩溃后启动时间过长。MySQL 5.5 中引入的优化加快了崩溃恢复过程的某些步骤 。特别是,由于改进了内存管理算法,因此扫描 重做日志和应用重做日志的速度更快。如果您人为地保持日志文件较小以避免启动时间过长,您现在可以考虑增加日志文件大小以减少由于重做日志记录的回收而发生的 I/O。 - 配置
InnoDB缓冲池的实例大小和数量,这 对于具有数千兆字节缓冲池的系统而言尤其重要。请参阅 第 15.8.3.2 节,“配置多个缓冲池实例”。 - 增加并发事务的最大数量,从而极大地提高了最繁忙数据库的可伸缩性。请参阅第 15.6.6 节,“撤消日志”。
- 将清除操作(一种垃圾收集)移动到后台线程中。请参见 第 15.8.9 节,“清除配置”。要有效地衡量此设置的结果,请先调整其他与 I/O 相关和与线程相关的配置设置。
- 减少
InnoDB并发线程之间的切换量 ,让繁忙的服务器上的SQL操作不会排队,形成“堵车”。为该innodb_thread_concurrency选项设置一个值, 对于高性能现代系统,最多约为 32。增加innodb_concurrency_tickets选项的值 ,通常为 5000 左右。这种选项组合设置了线程数的上限InnoDB任何时候处理,并允许每个线程在被换出之前做大量的工作,这样等待线程的数量就很少,操作可以在没有过多上下文切换的情况下完成。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




