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

MySQL 慢查詢日誌開啟、分析與優化實戰指南

     編輯:MySQL 資料庫相關知識

開啟慢查詢日誌

編輯 my.cnf / my.ini 的 [mysqld] 區塊:

slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slowquery.log
long_query_time = 2
log_queries_not_using_indexes = 1

參數說明:

  • long_query_time=2:超過 2 秒記錄(支援微秒,如 0.5)
  • log_queries_not_using_indexes:記錄未用索引的查詢(慎用,量大)

日誌格式解讀

# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372  Lock_time: 136  Rows_sent: 152  Rows_examined: 263630
SELECT id, name FROM manager WHERE id IN (66,10135);
  • Query_time:總耗時(秒)
  • Lock_time:鎖等待時間
  • Rows_examined:掃描行數(關鍵優化指標)
  • Rows_sent:返回行數

mysqldumpslow 官方分析工具

# 顯示訪問次數最多的 20 條 SQL
mysqldumpslow -s c -t 20 /var/lib/mysql/slowquery.log

# 顯示返回行數最多的 20 條 SQL
mysqldumpslow -s r -t 20 /var/lib/mysql/slowquery.log

# 顯示耗時最長的 10 條包含 LEFT JOIN 的 SQL
mysqldumpslow -t 10 -s t -g "left join" /var/lib/mysql/slowquery.log

核心參數速查

參數含義
-s排序方式:c=次數、t=時間、l=鎖時間、r=返回行數;前綴 a=倒序
-t NTop N 條
-g PATTERN正則過濾(不區分大小寫)
-a不抽象化數字/字符串(顯示真實值)
-l不扣除鎖時間(含鎖時間排序)

優化閉環建議

  1. 開啟慢查詢日誌(生產環境建議 long_query_time=1)
  2. 定期 mysqldumpslow 分析 Top SQL
  3. EXPLAIN 定位全表掃描、臨時表、文件排序
  4. 加索引 / 改寫 SQL / 調整參數
  5. 驗證效果 → 迭代優化

性能影響評估

慢查詢日誌對性能影響極小(假設多數查詢快),但能精準定位「丟失索引、索引未最佳應用」的問題 SQL,ROI 極高。

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