MySQL 默认配置仅适合玩具级负载,生产环境需从 schema 设计、查询优化、服务器参数、存储引擎、缓存策略五个维度系统调优。
INT > BIGINT、CHAR > VARCHAR(固定长)、NOT NULL、latin1 > utf8(非多语言场景)AUTO_INCREMENT > UUIDEXPLAIN 验证索引命中--log-slow-queries --long-query-time=2 定位慢查询| 参数 | 建议值 | 说明 |
|---|---|---|
max_connections | 1000~2000 | 防 Too many connections,配合连接池 |
table_cache | 512~2048 | 减少打开表开销 |
query_cache_size | 64M~256M | 只读多场景有效,高并发写入建议关闭 |
sort_buffer_size | 2M~8M | 每连接独占,慎设过大 |
datadir | 独立磁盘/分区 | 分离数据与日志 IO |
Intel CPU 服务器建议使用 Intel C++ 编译版 MySQL,查询性能可提升 ~30%。
key_buffer_size = 25%~33% RAM、myisam_sort_buffer_size、concurrent_insert=2DISABLE KEYS 后重建索引| 参数 | 建议值 | 影响 |
|---|---|---|
innodb_buffer_pool_size | 60%~80% RAM | 数据+索引+插入缓冲统一池,最关键参数 |
innodb_log_file_size | 256M~1G | 影响恢复速度与写入性能平衡 |
innodb_flush_log_at_trx_commit | 2 | 1=最安全最慢,2=折中,0=最快风险最大 |
innodb_flush_method | O_DIRECT | 避免双重缓冲,RAID 下显著提速 |
innodb_file_per_table | ON | 独立表空间,便于回收空间 |
innodb_thread_concurrency | (CPU+磁盘)*2 或 0(不限) | 内核并发控制 |
事务隔离级别可设 READ-COMMITTED 提升并发(需应用兼容)。
应用层缓存(Redis/Memcached)是性能倍增器,需针对热点数据、会话、计算结果分层设计,本文不再展开。