首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 慢查詢日誌開啟與分析實戰:log-slow-queries 配置指南

     編輯:MySQL 綜合教學

MySQL 慢查詢日誌開啟與分析實戰

慢查詢日誌是數據庫性能調優「聽診器」,記錄執行時間超過閾值的 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;
  • Query_time: SQL 實際執行時間(核心指標)。
  • Lock_time: Server 層等待表鎖時間(不含存儲引擎內部鎖)。
  • Rows_sent: 返回行數。
  • Rows_examined: 掃描行數(Rows_examined / Rows_sent >> 1 表明索引缺失或全表掃描)。

分析工具

  1. mysqldumpslow(官方自帶)
    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  # 含左連接
  2. pt-query-digest (Percona Toolkit) — 功能更強,支援聚合、報告、審計。
  3. 自動化平台 — 配合 ELK、Grafana 做實時慢查詢告警。

避坑指南

  • 日誌只能反映「慢」,不能直接說明原因(可能是鎖等待、系統繁忙、統計信息過期)。
  • 偶發慢查詢可忽略,**高頻慢查詢才是優化目標**。
  • 不要開啟 log-queries-not-using-indexes,會淹沒真正慢查詢。
  • 定期清理/輪轉日誌,防止磁盤寫滿。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved