慢查詢相關變量一覽
mysql> SHOW VARIABLES LIKE 'slow%';
+---------------------+--------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/mysql1-slow.log |
+---------------------+--------------------------------+
關鍵變量含義
| 變量 | 默認值 | 說明 |
| slow_query_log | OFF | 總開關:ON 啟用,OFF 關閉 |
| slow_query_log_file | host_name-slow.log | 日志文件路徑,可自定義 |
| long_query_time | 10 | 超過此秒數記錄(支持微秒,如 0.5) |
| log_queries_not_using_indexes | OFF | 記錄未使用索引的查詢(噪音大,慎開) |
| slow_launch_time | 2 | 線程創建超過此秒數記錄到 slow_launch_threads 狀態 |
| log_output | FILE | 輸出目標:FILE、TABLE、NONE |
動態開啟(無需重啟)
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/data/logs/mysql/slow.log';
狀態變量監控
SHOW GLOBAL STATUS LIKE 'Slow_queries'; -- 累計慢查詢數
SHOW GLOBAL STATUS LIKE 'Slow_launch_threads'; -- 慢啟動線程數
日志分析工具鏈
mysqldumpslow:官方自帶,快速 Top N
pt-query-digest:Percona Toolkit,專業級分析報告
mysqlsla:輕量級統計
- 自建 ELK / ClickHouse + 可視化大盤
生產環境建議配置
[mysqld]
slow_query_log = 1
slow_query_log_file = /data/logs/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 0
log_output = FILE
# 日志輪轉配置 logrotate
/var/lib/mysql/slow.log {
daily
rotate 30
compress
missingok
notifempty
create 640 mysql mysql
}