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

MySQL 慢查詢日誌分析工具 mysql-log-filter 實戰指南

     編輯:MySQL 綜合教學

工具介紹

mysql-log-filter (Google Code 專案) 提供 Python/PHP 兩種腳本,支援多維度過濾、去重、排序、增量分析,輸出可讀性強的報表。下載:https://down.51cto.com/data/2123725 (需翻牆或鏡像)。

核心使用範例 (Python)

# 基礎:取前 10 條高頻慢查詢,去重,按執行次數排序
python mysql_filter_slow_log.py ./mysql-slow.log \
  --no-duplicates --sort-execution-count --top=10 > mysql_slow_report.txt

# 進階:過濾條件 + 增量分析
php mysql_filter_slow_log.php -T=3 -eu=root \
  --no-duplicates --sort-execution-count --top=10 \
  --incremental linux-slow.log > mysql-slow-queries.log

# 實時監控模式 (守護進程)
tail -f -n 0 linux-slow.log | python mysql_filter_slow_log.py -T=3 -R=10000 -eu=root -eu=test &

關鍵參數速查

參數說明
-T, --min-query-time最小查詢時間閾值 (秒)
-R, --min-rows-examined最小掃描行數
-eu, --exclude-user排除用戶 (可多次)
--no-duplicates去重並輸出統計 (執行次數、首/末時間、平均/最大/總查詢時間、鎖時間、掃描/返回行數)
--sort-execution-count按執行次數排序 (另有 --sort-sum-query-time 等)
--top=N輸出前 N 條唯一查詢
--incremental記錄檔案位置與統計到 SQLite,支援增量分析
--details輸出每條查詢的時間戳明細

慢查詢日誌開啟配置 (my.cnf)

[mysqld]
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=0.01          # 記錄超過 10ms 的查詢 (5.1.21+ 支援微秒)
min_examined_row_limit=1000   # 忽略掃描行少的查詢
log_output=FILE               # 強制寫檔案,避免寫 TABLE 丟失微秒
log-queries-not-using-indexes # 記錄未用索引查詢 (慎用,量大)
log-slow-admin-statements     # 記錄 OPTIMIZE/ANALYZE/ALTER 等
log-slow-slave-statements     # 記錄從庫慢查詢 (5.1.21+)

# 線上動態開啟 (無需重啟)
SET GLOBAL slow_query_log=1;
SET GLOBAL long_query_time=1;

常見坑點修正

腳本預設將 query_time 解析為 int,但慢查詢日誌實為 float (如 0.000123),導致報錯。需修改源碼 (約 469 行):

# 原始
query_time = (int(numbers[1].split()[0]), int(numbers[2].split()[0]), ...)
# 修正為 float
query_time = (float(numbers[1].split()[0]), float(numbers[2].split()[0]), ...)

替代工具推薦

  • pt-query-digest (Percona Toolkit):功能最全、維護最活躍,支援多種報表格式。
  • mysqldumpslow:MySQL 內建,簡單場景足夠。
  • GoMySQLSlow、slow-query-analyzer:現代語言重寫,效能更好。

善用分析工具,讓慢查詢無處遁形,精準定位優化目標。

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