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

Linux 下 MySQL 開啟慢查詢日誌完整指南:動態配置、配置文件、分析工具

     編輯:MySQL 綜合教學

方法一:動態配置 (無需重啟,即時生效)


-- 1. 查看默認慢查詢閾值 (10秒)
SHOW VARIABLES LIKE '%long%';
-- long_query_time: 10.000000

-- 2. 修改閾值 (建議 1-5 秒,生產建議 2 秒)
SET GLOBAL long_query_time = 2;
-- 當前會話立即生效: SET SESSION long_query_time = 1;

-- 3. 查看慢查詢狀態
SHOW VARIABLES LIKE '%slow%';
-- log_slow_queries: OFF (舊參數名)
-- slow_query_log: OFF (新參數名,5.1+)
-- slow_query_log_file: /var/lib/mysql/hostname-slow.log

-- 4. 開啟慢查詢日誌 (需 GLOBAL)
SET GLOBAL slow_query_log = 'ON';
-- 驗證
SHOW VARIABLES LIKE '%slow%';
-- slow_query_log: ON

方法二:配置文件持久化 (重啟生效,生產標準)


# /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 慢查詢配置
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/mysql-slow.log
long_query_time = 2                    # 秒,支持微秒如 0.5
log_queries_not_using_indexes = 1      # 記錄未用索引查詢 (慎開,量大)
# log_throttle_queries_not_using_indexes = 100  # 限流 (5.6+)
min_examined_row_limit = 100           # 忽略掃描行數 < 100 的查詢 (減少噪音)

重啟生效**:


sudo systemctl restart mysql
# 注意:某些環境 reload 不生效,必須 restart

慢查詢日誌分析工具鏈

工具特點安裝/使用
mysqldumpslow官方自帶,按查詢模式聚合統計mysqldumpslow -s t -t 10 /var/lib/mysql/mysql-slow.log (按時間排序顯示前 10)
pt-query-digest (Percona Toolkit)**最強分析器**,多維度報告、歷史趨勢、索引建議pt-query-digest /var/lib/mysql/mysql-slow.log --limit 20 --since '2h ago'
mysqlsla老牌分析工具,輸出 HTML 報表較老,漸少維護
Grafana + Loki/Promtail現代化可視化、告警、日誌聚合需部署監棧

mysqldumpslow 核心參數


-s <排序方式> : t(時間)、c(次數)、l(鎖定時間)、r(返回行數)  默認 t
-t        : 顯示前 N 條
-g <正則>    : 只分析匹配模式的查詢
--verbose    : 顯示完整 SQL

pt-query-digest 實戰報告解讀

輸出含:

  • Rank:影響力排名 (時間 × 次數)
  • Query ID:查詢指紋分組
  • Response time:總/平均/中位/95% 響應時間
  • Calls:執行次數
  • Rows examined/sent:掃描/返回行數 (關鍵!掃描≫返回 = 缺索引)
  • Query abstract:參數化後的查詢模式
  • Sample query:具體樣本 SQL
  • Tables/Indexes:涉及表/建議索引

最佳實踐建議

  1. 長期開啟**:慢查詢日誌開銷極低,**生產環境建議常開**,定期歸檔分析
  2. 閾值分級**:核心庫 1-2 秒,非核心 5-10 秒
  3. log_queries_not_using_indexes 謹慎開**:全表掃描極多時會產生海量日志,建議配合 min_examined_row_limit 和 log_throttle_queries_not_using_indexes
  4. 定期輪轉**:logrotate 配置每日/按大小切割,保留 30 天
  5. 慢查詢治理閉環**:pt-query-digest 產出 Top SQL → EXPLAIN 分析 → 加索引/改 SQL/調參數 → 驗證效果 → 歸檔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved