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

MySQL 5.6 慢查詢優化實戰 (一):慢日誌開啟、參數配置與分析工具鏈

     編輯:MySQL 綜合教學

為什麼需要慢日誌?

數據庫響應慢 90% 由查詢引起。MySQL 不像 Oracle 自動推薦優化,**必須主動開啟慢日誌、分析、優化、驗證** 形成閉環。

慢日誌記錄格式解析

# Time: 2023-10-10T09:33:57.123456Z
# User@Host: root[root] @ localhost []  Id: 1
# Query_time: 0.000342  Lock_time: 0.000142  Rows_sent: 3  Rows_examined: 3
use test;
SET timestamp=1412904837;
SELECT * FROM t;
  • Query_time:總耗時 (秒),含鎖等待、IO、CPU。
  • Lock_time:等待鎖時間。
  • Rows_sent:返回客戶端行數。
  • Rows_examined:存儲引擎層掃描行數。**核心效率指標**:Rows_examined / Rows_sent 越大,索引利用越差。

核心參數配置 (動態生效,持久化寫入 my.cnf)

動態開啟示例

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 0.5;
SET GLOBAL log_queries_not_using_indexes = ON;
SET GLOBAL log_throttle_queries_not_using_indexes = 60;
SET GLOBAL min_examined_row_limit = 1000;

分析工具鏈對比

參數建議值說明
slow_query_logON開啟慢日誌
slow_query_log_file/mysql/log/slow.log獨立磁碟/目錄,避免佔滿根分區
long_query_time0.5 ~ 1.0秒級閾值,微秒級精度 (5.1+)。生產建議 1s,分析期可調 0.1s
log_queries_not_using_indexesON記錄無索引查詢 (全表掃描),**極其重要**
log_throttle_queries_not_using_indexes60每分鐘最多記錄 60 條無索引查詢,防止日誌爆炸
min_examined_row_limit1000掃描行數超過此值才記錄,過濾微小表誤報
log_outputFILEFILE/TABLE/NONE。FILE 便於工具分析,TABLE 便于 SQL 查詢
工具語言核心優勢適用場景
mysqldumpslowPerl (內建)零依賴、快速 Top N、按時間/次數/行數排序日常快速巡檢
pt-query-digest (Percona Toolkit)Perl統計全維度 (次數、時間分佈、95%分位、佔比)、生成報表、支持歷史趨勢**生產標準分析**、定期報告
mysqlslaPerl早期工具,功能類 pt-query-digest,維護較少歷史項目兼容
go-mysql-slowlogGo高性能解析、JSON 輸出、易集成 ELK/Grafana實時流式分析、大規模集群

mysqldumpslow 常用姿勢


pt-query-digest 標準報告解讀

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