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

mysqldumpslow 分析 Slow Query Log 實戰:定位性能瓶頸

     編輯:MySQL 資料庫相關知識

慢查詢日志記錄超時/無索引 SQL,mysqldumpslow 可快速聚合分析,找出高頻、高耗時、大結果集語句。

啟用慢查詢日志

[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/slow.log
log-queries-not-using-indexes

運行一段時間後關閉,避免持續 I/O 開銷。

mysqldumpslow 核心參數

參數含義
-s c/t/l/r按查詢次數/時間/鎖時間/返回行數排序(加 a 如 -s at 為倒序)
-t N顯示前 N 條
-g "pattern"正則過濾(如 left join),大小寫不敏感

實戰命令示例

# 高頻 TOP20
mysqldumpslow -s c -t 20 host-slow.log

# 大結果集 TOP20
mysqldumpslow -s r -t 20 host-slow.log

# 耗時 TOP10 且含 LEFT JOIN
mysqldumpslow -t 10 -s t -g "left join" host-slow.log

分析產出與優化動作

指標異常典型原因優化動作
高頻應用層重複查詢、N+1 問題合併查詢、緩存、批量接口
高耗時全表掃描、缺失索引、複雜 JOIN加索引、改寫 SQL、分表
大結果集缺乏分頁、不必要的 SELECT *加 LIMIT、列裁剪、游標分頁
高鎖時間長事務、熱點行更新縮短事務、樂觀鎖、分庫分表

持續化建議

  • 將分析腳本納入每日巡檢,自動推送 TOP 10 給開發負責人。
  • 結合 pt-query-digest(Percona Toolkit)獲得更豐富的統計維度。
  • 慢查詢閾值 long_query_time 建議設為 1-2 秒,根據業務基線調整。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved