慢查詢是效能調優切入點。本文講解 long_query_time 動態配置、慢查詢日志開啟、mysqldumpslow 多維度分析 Top SQL,構建「發現→分析→優化」閉環。
[mysqld] long_query_time = 1 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log log_queries_not_using_indexes = 1 -- 記錄未用索引查詢
實戰案例
| 命令 | 用途 |
|---|---|
| 最高頻 Top 10 | |
| 最耗時 Top 10 | |
| 返回行數最多 Top 10 | |
| 含 LEFT JOIN 的最耗時 Top 10 |
mysqldumpslow 獲取疑似 SQLEXPLAIN 看執行計劃:索引、掃描行數、臨時表、filesortSET profiling=1; EXECUTE SQL; SHOW PROFILE FOR QUERY n; 看階段耗時long_query_time=1(核心業務可設 0.5)logrotate 每天切割、保留 30 天、壓縮mysqldumpslow -s t -t 20 產出優化清單log_queries_not_using_indexes 於高併發核心庫(噪音太大),改用 Performance Schema 監控