優化不靠猜,靠工具。MySQL 內建 SHOW STATUS 看運行狀態、EXPLAIN 分析執行計畫、OPTIMIZE TABLE 整理碎片,三板斧解決 80% 效能問題。
SHOW STATUS;
關鍵指標:
| 變數 | 含義 | 異常判斷 |
|---|---|---|
Aborted_connects | 嘗試連線失敗數 | 暴增可能遭暴力破解或網路抖動 |
Connections | 總連線嘗試數 | 配合 Uptime 算 QPS |
Max_used_connections | 歷史峰值併發 | 接近 max_connections 需擴容 |
Threads_connected | 當前連線數 | 突增檢查慢查詢或連線洩漏 |
Innodb_buffer_pool_reads | 緩衝池未命中讀磁碟次數 | 高則需加大 innodb_buffer_pool_size |
Created_tmp_disk_tables | 磁碟臨時表數 | 高則需調 tmp_table_size 或優化 SQL |
| 欄位 | 重點值 | 含義 |
|---|---|---|
type | system/const/eq_ref/ref/range/index/ALL | 由好到壞,ALL=全表掃描 |
key | 實際用到的索引 | NULL 表示未用索引 |
rows | 預估掃描行數 | 越小越好 |
Extra | Using index/Using where/Using temporary/Using filesort | Using index=覆蓋索引佳;temporary/filesort 需優化 |
OPTIMIZE TABLE tbl_name;
DELETE、UPDATE 變長欄位後,產生碎片、空洞。pt-query-digest(Percona Toolkit)分析慢查詢日誌。MySQLTuner.pl 自動檢查配置與狀態給建議。sys schema(5.7+ 內建)標準化效能視圖。