| 參數 | 建議值 | 說明 |
| innodb_buffer_pool_size | 專用機 70-80% 內存 | 核心緩存,數據+索引+鎖+自適應哈希 |
| innodb_log_file_size | 512M-1G | 減少檢查點刷盤,崩潰恢復時間可控 |
| innodb_flush_log_at_trx_commit | 2(高性能)/1(最高安全) | 刷盤策略 |
| max_connections | 2000-5000 | 配合 thread_cache_size=100 |
| query_cache_type/size | OFF/0 (5.7+ 建議關閉,8.0 移除) | 鎖競爭大,命中率低場景負收益 |
| tmp_table_size/max_heap_table_size | 64M | 減少磁盤臨時表 |
| sort_buffer_size/join_buffer_size | 2M-4M | 按會話分配,慎調大導致 OOM |
八、碎片整理與維護
-- InnoDB 表碎片整理(在線,5.6+ 支持 Online DDL)
OPTIMIZE TABLE tbl_name;
-- 或
ALTER TABLE tbl_name ENGINE=InnoDB; -- 重建表
-- 監控碎片
SELECT TABLE_NAME,
ROUND(DATA_FREE/1024/1024,2) AS Free_MB,
ROUND(DATA_FREE/(DATA_LENGTH+INDEX_LENGTH)*100,2) AS Frag_Pct
FROM information_schema.TABLES
WHERE TABLE_SCHEMA='db' AND DATA_FREE > 100*1024*1024;
九、備份恢復體系
- 邏輯備份:
mysqldump --single-transaction --routines --triggers --events 夜間低峰
- 物理熱備:Percona XtraBackup 非阻塞、增量、流式傳輸
- Binlog 增量:
mysqlbinlog PITR 時間點恢復
- 定期演練:月度恢復測試,驗證 RPO/RTO
十、硬件與架構擴展
- 內存 > CPU > SSD > 網絡:優先加大內存(Buffer Pool)、NVMe SSD
- 64位 OS + 64位 MySQL:突破 32位 3-4GB 進程限制
- 讀寫分離 → 分庫分表 → 多活/多雲:按業務增長階段演進
優化無終點,只有權衡。建立「慢查詢發現 → EXPLAIN 分析 → 索引/SQL/架構優化 → 壓測驗證 → 監控固化」閉環。工具鏈:pt-query-digest、sys schema、Performance Schema、Grafana+Prometheus 監控大盤。
- 上一篇文章: MySQL "server has gone away" 錯誤原因深度分析與四大解決方案
- 下一篇文章: PHP 以表格形式輸出 MySQL 資料表資料的實作方法
Copyright ©
程式碼之家 All Rights Reserved