-
优化MySQL配置
- 修改
/etc/my.cnf,调整关键参数:innodb_buffer_pool_size:设置为系统总内存的50%-80%(如innodb_buffer_pool_size=4G),这是内存主要消耗项。tmp_table_size/max_heap_table_size:限制临时表内存(如256M),避免大查询占用过多内存。- 关闭查询缓存(MySQL 8.0已默认禁用,旧版本可设为
0)。
- 重启MySQL生效:
systemctl restart mysqld。
- 修改
-
优化查询与索引
- 使用
EXPLAIN分析慢查询,添加索引避免全表扫描。 - 限制结果集大小(
LIMIT),避免SELECT *。 - 定期优化表:
OPTIMIZE TABLE。
- 使用
-
系统级优化
- 关闭透明大页(THP):
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag(永久生效需添加到
/etc/rc.local)。 - 监控内存使用:通过
top、htop或pmap查看mysqld进程内存占用,重点关注RES(物理内存)。
- 关闭透明大页(THP):
-
硬件与架构优化
- 增加物理内存,尤其适用于高负载场景。
- 将MySQL临时文件目录(
tmpdir)指向高速存储(如SSD)。
注意:修改配置前需备份数据,建议在测试环境验证后再应用到生产环境。