一、硬件与系统层优化:夯实性能基石
硬件选型策略
- CPU:读密集型场景选择多核 CPU(如 32 核);写密集型场景选择高主频 CPU(如 3.5GHz+)。
- 内存:建议≥64GB,缓冲池命中率≥99% 是性能关键指标。
- 存储:必用 NVMe SSD,IOPS≥5 万,避免 HDD 的 I/O 瓶颈。RAID10 配置兼顾性能与冗余。
操作系统级优化
- 内核参数调整(/etc/sysctl.conf):
fs.file-max = 1000000
net.core.somaxconn = 65535
vm.swappiness = 1
- 文件系统:XFS 优于 EXT4(处理大文件更高效),挂载选项加 noatime 减少元数据写入。
- 关闭 NUMA:避免跨节点内存访问延迟,BIOS 中关闭或启动参数加 numa=off。
二、内存配置优化:拒绝无效资源浪费
核心参数配置
| 参数 | 推荐值 | 作用 |
|---|
| innodb_buffer_pool_size | 物理内存的 70%~80% | 缓存数据与索引,减少磁盘 I/O |
| innodb_log_buffer_size | 64M~128M | 加速 Redo 日志写入,写密集型应用必调 |
| key_buffer_size | 128M(仅 MyISAM 需调) | 缓存 MyISAM 索引 |
避坑指南
- 缓冲池分区:高并发场景启用多缓冲池实例(innodb_buffer_pool_instances = 8),减少锁竞争。
- OOM 预防:总内存分配 ≤ 物理内存的 90%,预留空间给操作系统和连接线程。
三、InnoDB 引擎调优:事务与 I/O 的平衡艺术
日志与写入优化
- 事务安全 vs 性能:
- innodb_flush_log_at_trx_commit = 1:主库必选(ACID 保障)
- innodb_flush_log_at_trx_commit = 2:从库或允许秒级数据丢失的场景
- 日志文件大小:innodb_log_file_size = 1~4GB,过大影响恢复速度,过小导致频繁 Checkpoint。
I/O 策略优化
innodb_flush_method = O_DIRECT
innodb_io_capacity = 5000
=