慢查詢日誌是數據庫性能調優「聽診器」,記錄執行時間超過閾值的 SQL,助力定位瓶頸。
編輯 my.cnf ([mysqld] 區段):
# Linux/Unix log-slow-queries = /tmp/mysql-slow.log long_query_time = 2 # Windows (my.ini) log_slow_queries long_query_time = 2
保存後重啟 MySQL 生效。
| 參數 | 說明 | 建議值 |
|---|---|---|
long_query_time | 超過多少秒記錄(5.1.21+ 支持微秒) | 1-2 秒(Web 應用 1 秒即慢) |
log-slow-queries | 日誌文件路徑 | 獨立磁盤、足夠空間 |
log-queries-not-using-indexes | 記錄無索引查詢 | 不建議開啟,產生大量垃圾日誌 |
# Time: 120815 23:22:11 # User@Host: root[root] @ localhost [] # Query_time: 9.869362 Lock_time: 0.000035 Rows_sent: 1 Rows_examined: 6261774 SET timestamp=1294388531; select count(*) from blog;
mysqldumpslow -s t -t 10 /tmp/mysql-slow.log # 按時間前10 mysqldumpslow -s c -t 10 /tmp/mysql-slow.log # 按次數前10 mysqldumpslow -s r -t 10 -g "left join" /tmp/mysql-slow.log # 含左連接
log-queries-not-using-indexes,會淹沒真正慢查詢。