MySQL 可調參數超百個,但只需調對關鍵少數即可獲得 80%+ 的性能收益。本文精選 10 項必改配置,按重要性分類說明。
SET GLOBAL 驗證,持久化寫入 [mysqld] 區段。innodb_buffer_pool_size 以 MB/GB 為單位,max_connections 無單位。| 參數 | 建議值 | 說明 |
|---|---|---|
innodb_buffer_pool_size | 物理內存 60~80% | 數據/索引緩存核心區。例:8G 內存 → 5-6G;32G → 20-25G;128G → 100-120G。 |
innodb_log_file_size | 512M ~ 4G | Redo log 文件大小。5.5+ 崩潰恢復快,可設大以提升寫入。總大小 = 文件數 × 單文件(默認 2 文件)。 |
max_connections | 500~2000 | 默認 151 易觸發 "Too many connections"。應用層配合連接池,避免活躍連接過多導致服務器假死。 |
| 參數 | 建議值 | 說明 |
|---|---|---|
innodb_file_per_table | ON | 獨立表空間(.ibd),支援 DROP/TRUNCATE 回收磁盤、數據壓縮、傳輸表空間。5.6+ 默認 ON。 |
innodb_flush_log_at_trx_commit | 1(主庫) 2(備庫) | 1=全 ACID,每提交 fsync;2=每秒 fsync,備庫可接受;0=最快但崩潰丟 1 秒數據,僅限非核心備庫。 |
innodb_flush_method | O_DIRECT | 有帶電池備份的 RAID 卡時用 O_DIRECT 繞過 OS cache;否則默認 fdatasync。 |
innodb_log_buffer_size | 8M~64M | 大事務(含 BLOB/TEXT)需調大。觀察 Innodb_log_waits ≠ 0 時調大。 |
| 參數 | 建議值 | 說明 |
|---|---|---|
query_cache_size | 0 | 查詢緩存鎖爭用嚴重,5.6+ 默認關閉。改用索引優化、讀寫分離、Redis/Memcached 外部緩存。 |
log_bin | ON(主庫) | 開啟 Binlog 支援主從復制、PITR。配合 server_id、expire_logs_days=7 防磁盤爆滿。 |
skip_name_resolve | ON | 跳過 DNS 反解析,加速連接建立。GRANT 只能用 IP,遷移舊系統需謹慎。 |
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'innodb_log_file_size';
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'innodb_file_per_table';
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
SHOW VARIABLES LIKE 'query_cache_size';
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'skip_name_resolve';
這 10 項配置覆蓋內存、Redo、連接、表空間、刷盤策略、查詢緩存、Binlog、DNS 八大核心維度。調好它們,你就擁有了一个「開箱即用、穩健高效」的 MySQL 實例。後續再根據具體負載(讀多寫少、高並發、大事務等)做微調即可。