接續前四篇,本文聚焦 SQL 寫法過於複雜、配置錯誤、機器資源耗盡三大進階調優方向。
涉及 GROUP BY、多表聯查等特殊功能時,用 EXPLAIN (或 DESC) 分析執行計畫。筆者環境複雜 SQL 較少,暫無通用建議,核心原則:拆解大 SQL、避免臨時表、善用覆蓋索引。
| 參數 | 建議值 | 說明 |
|---|---|---|
| key_buffer_size | 128M | 所有表索引盡量放入記憶體;索引過大考慮將低頻大表移出 |
| sort_buffer_size / myisam_sort_buffer_size | 1M | 單線程排序緩衝;過小導致多次磁盤合併,優化重點在縮小結果集 |
| thread_concurrency | CPU核心數 x 2 | 如 4 核設 8 |
| interactive_timeout / wait_timeout | 10-30 秒 | 快速釋放閒置連線資源;活躍連線不受影響 |
| query_cache_type | 0 (關閉) 或 2 (DEMAND) | 寫入頻繁時查詢快取反拖累效能;僅讀庫可開啟 |
| max_connections | 400-600 | 預設 100 偏小;超過 600 需架構擴展而非單純調大 |
其餘參數保持預設即可。提醒:配置非效能問題主因;穩定性與資料正確性永遠優先於效能。
架構調優無銀彈,需根據業務特點、團隊能力、成本預算在一致性、可用性、分區容錯 (CAP) 中權衡。