慢查詢日誌是 SQL 調優的「體檢報告」。本文詳細說明啟用慢查詢、設定閾值、分析日誌、微秒級補丁方案,以及主從架構下的低影響監控策略。
| 參數/狀態 | 命令 | 說明 |
|---|---|---|
log_slow_queries / slow_query_log | SHOW VARIABLES LIKE '%slow%'; | 是否啟用慢查詢日誌(5.1+ 用 slow_query_log) |
long_query_time | SHOW VARIABLES LIKE 'long_query_time'; | 慢查詢閾值(秒),預設 10 秒,建議 1-5 秒 |
Slow_queries | SHOW GLOBAL STATUS LIKE 'Slow_queries'; | 累計慢查詢次數 |
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2; -- 2 秒
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = ON -- 記錄未用索引的查詢
權限注意: 日誌目錄需 MySQL 執行帳號可寫入權限。
long_query_time 最小 1 秒(MySQL 5.1+ 支援浮點數,如 0.001 為 1 毫秒)。在從庫啟用慢查詢日誌:
mysqldumpslow:官方內建,統計頻率、耗時、掃描行數。pt-query-digest (Percona Toolkit):專業分析,支援聚合、排序、報表輸出。