1. 调整MySQL配置文件(核心内存参数优化)
innodb_buffer_pool_size:这是InnoDB存储引擎的核心内存参数,用于缓存数据和索引,直接影响查询性能。建议设置为服务器物理内存的50%-80%(如32GB内存可设为16-25.6GB),优先满足InnoDB的缓存需求。key_buffer_size:仅适用于MyISAM引擎的索引缓存,若未使用MyISAM(如纯InnoDB场景),建议设为64MB以下,避免浪费内存。tmp_table_size & max_heap_table_size:控制临时表的内存使用,避免大查询占用过多内存导致磁盘临时表产生。建议两者设置为相同值(如64MB),并根据业务调整。max_connections:限制并发连接数,过多连接会消耗大量内存。建议根据应用需求设置(如500以内),并结合thread_cache_size(缓存线程,减少线程创建开销,建议设为50-100)优化。wait_timeout & interactive_timeout:设置空闲连接的超时时间(如300秒),自动关闭闲置连接,释放内存资源。2. 优化查询与索引(减少内存消耗)
SELECT *:只查询需要的列,减少数据传输量和内存占用(如SELECT id, name FROM users代替SELECT * FROM users)。EXPLAIN分析查询:通过EXPLAIN命令查看查询执行计划,识别全表扫描、临时表等性能瓶颈,针对性优化SQL语句。3. 定期维护数据库(释放内存空间)
OPTIMIZE TABLE命令(或使用pt-online-schema-change在线优化),整理表碎片,回收空间,减少内存占用。4. 系统层面优化(提升内存使用效率)
sudo swapoff -a禁用,并在/etc/fstab中注释Swap条目。systemd(如sudo systemctl edit mysql添加MemoryLimit=4G)或cgroup限制MySQL进程的内存使用,避免内存耗尽。5. 监控内存使用(持续优化基础)
top、htop、free等命令实时查看MySQL进程的内存占用情况。performance_schema(内置监控工具)、mysqltuner(第三方脚本)分析内存使用趋势,获取优化建议(如调整缓冲池大小)。