译自 MySQL 101: Parameters to Tune for MySQL Performance
尽管没有MySQL调优的银弹,但还是有一些方面可以显着提高MySQL的性能。这些年来,尽管已经发布了许多有关此主题的信息,但我想逐一讲述一些最关键的任何人都毋庸置疑都参数设置。
根据您所运行的MySQL版本的不同,本文中使用的某些默认值可能与您的安装版本有所不同,但前提基本相同。
最基本的MySQL性能调优可以分为以下几类:
硬件调优
根据MySQL的硬件规格,需要根据计算机(或VM)规范设置一些变量。以下变量在很大程度上取决于您的硬件:
innodb_buffer_pool_size
- 通常,将其设置为总RAM的50%-70%作为起点。
- 不需要将其设置为大于数据库的总大小。
- Percona监视和管理(PMM)工具可以提供更多的缓冲池使用情况参考依据,并允许您进行相应的调整。
innodb_log_file_size
- 通常设置在128M – 2G之间。
- 应该足够大,最多可以容纳一个小时左右的日志。
- 数值应保证MySQL可以在flush和checkpoint过程中对写进行重新排序,以使用顺序I/O。
This is more than enough so that MySQL can reorder writes to use sequential I/O during the flushing and checkpointing processes.
- PMM可以提供更多的参考依据,比如您使用的日志空间超过50%,您可能会因及时对日志文件大小的增加而受益。
innodb_flush_log_at_trx_commit
- 设置为“ 1”(5.7中的默认值)可提供最大的持久性。
- 设置为“ 0”或“ 2”将提供更高的性能,但持久性会更低。
innodb_flush_method
- 将此设置为O_DIRECT将避免双重缓冲带来的性能损失。