一、硬件优化
- 升级硬件:增加内存(推荐16GB+)、使用SSD硬盘(提升I/O速度),避免使用swap分区。
- 多核CPU:根据负载增加CPU核心数,提升并发处理能力。
二、配置优化
- 调整缓冲区:
innodb_buffer_pool_size:设置为物理内存的50%-80%(InnoDB核心参数)。innodb_log_file_size:设置为128M-512M,减少日志切换频率。
- 优化连接数:
max_connections根据并发量调整(建议500-1000),避免资源耗尽。
三、索引优化
- 创建高效索引:为查询条件字段添加索引,避免全表扫描;使用覆盖索引减少回表。
- 避免索引失效:不在索引列使用函数、计算或前缀模糊查询(如
LIKE '%xxx%')。
四、查询优化
- 简化SQL语句:
- 避免
SELECT *,只查询必要字段。 - 使用
LIMIT限制返回行数,分页查询优先用覆盖索引优化。
- 避免
- 优化JOIN操作:减少JOIN表数量,确保连接字段有索引,优先用
INNER JOIN替代LEFT JOIN。 - 使用EXPLAIN分析:通过
EXPLAIN查看执行计划,定位全表扫描、索引失效等问题。
五、表结构优化
- 分区大表:按日期或范围分区,减少单表数据量。
- 选择合适存储引擎:InnoDB(支持事务,适合高并发)或MyISAM(适合读密集型场景)。
六、定期维护
- 清理碎片:使用
OPTIMIZE TABLE整理表碎片,提升查询效率。 - 监控慢查询:开启慢查询日志(
slow_query_log=1),用pt-query-digest分析TOP慢查询。
七、其他优化
- 使用缓存:应用层用Redis缓存热点数据,减少数据库压力。
- 调整操作系统参数:增大文件描述符限制(
ulimit -n),优化内核参数(如vm.swappiness=0)。
注意:修改配置前需备份数据,生产环境建议先在测试环境验证优化效果[1,2,3,4,5,7,8,9,10,11]。