调整缓冲池大小
innodb_buffer_pool_size为系统内存的50%-80%(如16GB内存可设为8-12GB),用于缓存数据和索引,提升查询效率。优化日志相关参数
innodb_log_file_size(如256MB-1GB),减少日志切换频率,提升写入性能。innodb_flush_log_at_trx_commit=2,牺牲部分数据安全性换取更高性能(适用于非金融场景)。合理配置连接数与线程缓存
max_connections(如500-1000),避免连接过多导致内存耗尽。thread_cache_size(如64-128),缓存线程以减少创建/销毁开销。启用并优化查询缓存(谨慎使用)
query_cache_type=1并设置query_cache_size(如64MB-200MB),但需注意缓存碎片问题。FLUSH QUERY CACHE清理碎片,或使用Redis等外部缓存替代。优化临时表与排序缓冲区
tmp_table_size和max_heap_table_size为相同值(如256MB-1GB),避免临时表写入磁盘。sort_buffer_size(如8MB-16MB)和join_buffer_size(如8MB-2MB),提升排序和JOIN操作效率。其他内存相关优化
vm.swappiness(设为0),避免系统频繁使用交换空间,优先使用物理内存。innodb_file_per_table=1,避免共享表空间占用过多内存。top或htop),避免过度分配导致系统不稳定。EXPLAIN分析慢查询,从SQL层面优化,而非单纯依赖内存调优。参考来源: