一、硬件优化
- 采用SSD硬盘,提升I/O性能;增加内存,推荐使用64位系统。
- 避免使用swap分区,可通过调整
vm.swappiness=0减少系统对swap的依赖。
二、配置参数优化
- 缓冲池:
innodb_buffer_pool_size设为系统内存的50%-80%。 - 日志文件:
innodb_log_file_size设为128M-512M,innodb_flush_log_at_trx_commit根据需求设为0、1或2(0性能最高,1最安全)。 - 连接数:
max_connections根据并发量调整,避免过高。 - 文件描述符:在
/etc/security/limits.conf中设置nofile为65535以上。
三、索引优化
- 为高频查询字段创建索引,避免在低基数列(如性别)上建索引。
- 使用覆盖索引,减少回表查询;遵循最左前缀原则设计多列索引。
- 定期用
OPTIMIZE TABLE整理索引碎片。
四、查询优化
- 避免
SELECT *,只查询必要字段;用LIMIT限制返回行数。 - 减少子查询,优先使用JOIN;避免
LIKE '%value%'这类无法利用索引的查询。 - 使用
EXPLAIN分析查询计划,定位性能瓶颈。
五、系统与定期维护
- 内核参数:调整
/etc/sysctl.conf,如增大net.core.somaxconn(建议65535),优化TCP连接。 - 慢查询监控:开启慢查询日志,通过
mysqldumpslow或工具分析慢SQL。 - 表优化:定期执行
ANALYZE TABLE更新统计信息,OPTIMIZE TABLE清理碎片。
六、工具与监控
- 使用
MySQLTuner或Percona Toolkit分析数据库性能,获取优化建议。 - 通过
SHOW STATUS和SHOW PROCESSLIST实时监控数据库状态。
注意:修改配置前需备份数据,建议在测试环境验证后再应用到生产环境。