ORDER BY 無索引支援導致磁碟排序,I/O 飆升。Too many connections,阻塞正常業務。| 方案 | 痛點 |
|---|---|
| Zabbix 等外部監控 | 非資料庫內核視角,指標延遲、不準,僅適合歷史趨勢 |
| 每週效能統計 | 採樣頻率極低,無法即時發現與告警 |
| Slowlog Top 10 | 慢查詢爆發時 Top 10 失去代表性;定時任務佔據名單,參考價值低 |
mysqlbinlog 結合時間窗快速鎖定異常區間。mysql> SHOW VARIABLES LIKE 'long%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 10.000000| +-----------------+----------+ mysql> SET long_query_time = 1; -- 1 秒即記錄 mysql> SHOW VARIABLES LIKE 'slow%'; +---------------------+-----------------+ | Variable_name | Value | +---------------------+-----------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /tmp/slow.log | +---------------------+-----------------+ mysql> SET GLOBAL slow_query_log = 'ON'; -- 立即生效
持久化請寫入 /etc/my.cnf:
long_query_time = 1 slow_query_log_file = /tmp/slow.log
# 依執行次數排序前 10 /path/mysqldumpslow -s c -t 10 /tmp/slow.log # 依回傳行數排序前 10 /path/mysqldumpslow -s r -t 10 /tmp/slow.log # 含 left join 的前 10 慢查詢(依時間排序) /path/mysqldumpslow -s t -t 10 -g "left join" /tmp/slow.log
參數說明:-s c/t/l/r(次數/時間/查詢時間/回傳行數),ac/at/al/ar 為倒序,-t 為 Top N,-g 正則過濾。
Qcache_queries_in_cache -- 快取查詢數 Qcache_inserts -- 新增快取數 Qcache_hits -- 命中數 Qcache_lowmem_prunes -- 因記憶體不足被剔除數 Qcache_not_cached -- 未快取數(不可快取或 QUERY_CACHE_TYPE 關閉) Qcache_free_memory -- 快取剩餘記憶體 Qcache_free_blocks -- 空閒記憶體塊數 Qcache_total_blocks -- 總塊數
建議:Qcache_lowmem_prunes 持續增長時擴大 query_cache_size;Qcache_hits / Qcache_inserts 比值低則評估快取效益。