优化 Linux 上的 MySQL 是一个系统工程,通常从系统层、MySQL 配置、Schema/SQL、运维监控四个层面入手。下面按“由浅入深、可落地”的方式给你一份实用清单。
noatime,nodiratime
vm.swappiness = 1
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
net.core.somaxconn = 65535
mysql soft nofile 65535
mysql hard nofile 65535
innodb_buffer_pool_size = 物理内存的 60%~75%
innodb_buffer_pool_instances = 4~8
示例(16G 内存):
innodb_buffer_pool_size = 12G
innodb_log_file_size = 512M~1G
innodb_flush_log_at_trx_commit = 2 # 性能优先
innodb_flush_method = O_DIRECT
innodb_file_per_table = ON
max_connections = 500~2000
thread_cache_size = 100
wait_timeout = 300
interactive_timeout = 300
query_cache_type = 0 # 高并发建议关闭
slow_query_log = ON
long_query_time = 0.5
log_queries_not_using_indexes = ON
LIKE '%xx'SELECT *WHERE id > ? ORDER BY id LIMIT 10
ANALYZE TABLE xxx;
OPTIMIZE TABLE xxx; -- 谨慎使用
✅ buffer pool 是否够大
✅ 是否有慢 SQL
✅ 索引是否合理
✅ 是否有大量短连接
✅ 磁盘 IO 是否瓶颈
如果你愿意,可以告诉我:
my.cnf我可以直接帮你给出一份可用配置。