核心監控指標與優化判讀
慢查詢分析
SHOW VARIABLES LIKE '%slow%';
SHOW GLOBAL STATUS LIKE '%slow%';
Slow_queries > 0 需開啟慢查詢日誌分析
- 主從架構建議**僅從庫開啟**慢查詢日誌,減少主庫開銷
- 分析工具:
mysqldumpslow -s c -t 20 slow.log (Top 20 高頻慢查詢)
連接數健康度
SHOW VARIABLES LIKE 'max_connections';
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
- 理想:
Max_used_connections / max_connections ≈ 85%
- < 10% → max_connections 設過大,浪費記憶體
- 接近 100% → 擴大 max_connections 或增加從庫分流讀請求
MyISAM 索引快取 (key_buffer_size)
SHOW VARIABLES LIKE 'key_buffer_size';
SHOW GLOBAL STATUS LIKE 'Key_read%';
- 未命中率 =
Key_reads / Key_read_requests
- < 0.1% (千分之一) 極佳;< 0.01% → 記憶體配過多可適度縮減
- 區塊利用率:
Key_blocks_used / (Key_blocks_used + Key_blocks_unused) ≈ 80%
臨時表狀況
SHOW GLOBAL STATUS LIKE 'Created_tmp%';
- 磁碟臨時表比率 =
Created_tmp_disk_tables / Created_tmp_tables
- ≤ 25% 為合理;超過需調大
tmp_table_size、max_heap_table_size (受限於較小者)
表快取 (table_open_cache)
SHOW GLOBAL STATUS LIKE 'Open%tables%';
SHOW VARIABLES LIKE 'table_open_cache';
Open_tables / Opened_tables ≥ 85%
Open_tables / table_open_cache ≤ 95%
- Opened_tables 快速增長 → 調大 table_open_cache
執行緒快取 (thread_cache_size)
SHOW GLOBAL STATUS LIKE 'Thread%';
SHOW VARIABLES LIKE 'thread_cache_size';
Threads_created 持續增長 → 調大 thread_cache_size (典型 32-128)
- 緩存命中率 =
1 - Threads_created / Connections
查詢快取健康度
SHOW GLOBAL STATUS LIKE 'Qcache%';
SHOW VARIABLES LIKE 'query_cache%';
- 命中率 =
(Qcache_hits - Qcache_inserts) / Qcache_hits
- 碎片率 =
Qcache_free_blocks / Qcache_total_blocks > 20% → FLUSH QUERY CACHE
- 利用率 =
(query_cache_size - Qcache_free_memory) / query_cache_size 25-80%
Qcache_lowmem_prunes 持續增長 → 調大 size 或調整 min_res_unit
排序效能
SHOW GLOBAL STATUS LIKE 'Sort%';
Sort_merge_passes 大 → 增加 sort_buffer_size (但盲目調大不一定有效)
檔案描述符
SHOW GLOBAL STATUS LIKE 'Open_files';
SHOW VARIABLES LIKE 'open_files_limit';
Open_files / open_files_limit ≤ 75%
表鎖爭用
SHOW GLOBAL STATUS LIKE 'Table_locks%';
Table_locks_immediate / Table_locks_waited > 5000 → 考慮遷移 InnoDB (行級鎖)
全表掃描頻率
SHOW GLOBAL STATUS LIKE 'Handler_read%';
SHOW GLOBAL STATUS LIKE 'Com_select';
- 掃描率 =
Handler_read_rnd_next / Com_select
- > 4000 → 索引缺失嚴重,檢查
EXPLAIN、補索引、調大 read_buffer_size (≤ 8MB)
診斷流程建議
- 建立基準線:穩定運行 24h+ 後收集完整
SHOW GLOBAL STATUS
- 重點檢視上述 10 大指標組,標記異常項
- 針對異常項調整**單一參數**,觀察 1-2h 效果
- 記錄調整前後對比,形成優化知識庫
- 定期 (週/月) 複盤,應對負載變化