首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 慢查詢日誌分析利器:mysqldumpslow 與 mysqlsla 實戰對比

     編輯:MySQL 資料庫相關知識

為什麼需要工具分析慢查詢?

慢查詢日誌(Slow Query Log)是 MySQL 效能調優的金鑰數據來源。人工逐行閱讀不僅效率低,極易漏掉高頻、高耗時模式。官方 mysqldumpslow 與社區 mysqlsla 是兩大經典分析工具,各有優勢。

mysqldumpslow:官方輕量級分析器

基本用法


# 按查詢次數排序(-s c)
mysqldumpslow -s c /var/lib/mysql/slow.log

# 按總耗時排序(-s t)
mysqldumpslow -s t /var/lib/mysql/slow.log

# 按平均耗時排序(-s at)
mysqldumpslow -s at /var/lib/mysql/slow.log

# 顯示前 20 筆
mysqldumpslow -s c -t 20 /var/lib/mysql/slow.log

輸出欄位解讀

欄位含義
Count該模式 SQL 出現次數
Time總耗時 / 平均 / 最小 / 最大
Lock鎖等待總時間
Rows回傳行數 / 掃描行數總計
Abstracted Query參數化後的 SQL 模式(如 LIMIT N, N)

優缺點

  • ✅ 無需安裝,Perl 腳本隨 MySQL 附帶
  • ✅ 快速概覽高頻慢查詢模式
  • ❌ 無具體 SQL 範例,難以直接 EXPLAIN 驗證
  • ❌ 缺乏多維度統計(用戶、資料庫、95 分位等)

mysqlsla:功能強大的進階分析器

安裝


wget https://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
tar zxf mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make && make install

核心用法


# 基本分析
mysqlsla /var/lib/mysql/slow.log

# 指定排序:總耗時、平均耗時、查詢次數、鎖時間
mysqlsla -sort t_sum /var/lib/mysql/slow.log

# 過濾特定資料庫
mysqlsla -db mydb /var/lib/mysql/slow.log

# 輸出格式:報表、CSV、HTML
mysqlsla -of html /var/lib/mysql/slow.log > report.html

報表關鍵指標深度解讀

指標業務含義調優啟示
Count / %出現次數與佔比高頻慢查詢優先優化,ROI 最高
Time (sum/avg/min/max)多維度耗時統計關注 avg 與 max 差距大的查詢(不穩定)
95% of Time去極值後 95% 覆蓋率耗時更真實反映典型效能,排除極端值干擾
Lock Time鎖等待時間高鎖時間提示索引缺失、鎖衝突、長事務
Rows sent / examined回傳行數 vs 掃描行數Rows examined >> Rows sent 典型全表掃描特徵
Database / Users來源資料庫與用戶/ IP定責到具體業務模組與調用方
Query abstract參數化 SQL 模式快速定位問題查詢類型
Query sample實際 SQL 範例(含具體參數)可直接複製 EXPLAIN 分析執行計劃

工具選型建議

場景推薦工具理由
快速巡檢、無安裝權限環境mysqldumpslow開箱即用、輕量
深度調優、需要具體 SQL 範例mysqlsla多維統計、樣本 SQL、可匯出報表
持續化監控、自動化報表mysqlsla + crontab / pt-query-digest支援批次處理、多格式輸出
現代化替代方案Percona Toolkit pt-query-digest功能更全、維護更活躍、支援 JSON 輸出

進階工作流:從發現到驗證

  1. 收集:確保 slow_query_log=ON、long_query_time=1(或更低)、log_queries_not_using_indexes=ON
  2. 分析:mysqlsla -sort t_sum slow.log | head -100 定位 Top 10
  3. 取樣:從 Query sample 複製真實 SQL
  4. 驗證:EXPLAIN SELECT ... 檢查 type、key、rows、Extra
  5. 優化:加索引、改寫 SQL、調整參數、分表分庫
  6. 回歸:部署後持續觀察慢查詢日誌變化

現代替代者:pt-query-digest

mysqlsla 近年維護較少,Percona Toolkit 的 pt-query-digest 是目前社區標準:


# 安裝
yum install percona-toolkit  # 或下載二進制

# 使用
pt-query-digest /var/lib/mysql/slow.log
pt-query-digest --since "2h ago" --until "now" --output json slow.log > digest.json

優勢:支援多種日誌格式(慢查詢、General Log、Binlog、TCP 抓包)、JSON 輸出易於整合監控系統、積極維護與文件完善。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved