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

MySQL SQL 性能分析器(Profiling)使用指南

     編輯:MySQL 綜合教學

功能簡介

MySQL Profiling 可顯示 SQL 執行全過程中各階段的資源消耗(CPU、I/O、鎖等待、網路等),是診斷慢查詢、定位效能瓶頸的利器。

啟用與檢查

-- 檢查狀態(0=關閉, 1=開啟)
SELECT @@profiling;

-- 開啟(Session 級別)
SET profiling = 1;

-- 驗證
SELECT @@profiling;  -- 應回傳 1

注意:Profiling 僅支援 Session 級別,SET GLOBAL profiling=1 會報錯;重新連線後自動重置為關閉。

實戰範例

USE backup;
CREATE TABLE t5 AS SELECT * FROM t1;
SELECT COUNT(*) FROM t5;
SELECT COUNT(*) FROM t5;  -- 第二次有查詢緩存

SHOW PROFILES;
-- 輸出所有已記錄查詢的 Query_ID、Duration、SQL 文本

SHOW PROFILE FOR QUERY 7;  -- 針對特定 Query_ID 顯示詳細階段耗時

輸出欄位解讀

Status說明
starting / initialization查詢初始化
Opening tables打開資料表
System lock / Table lock系統/表鎖等待
init初始化查詢結構
optimizing優化器生成執行計劃
executing執行查詢(核心階段)
end / query end結束處理
freeing items / closing tables釋放資源、關閉表
logging slow query寫入慢查詢日誌

進階用法:聚合統計

SELECT SUM(DURATION) FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 7;

適用場景

  • 對比同一 SQL 多次執行的差異(如緩存命中前後)。
  • 定位具體階段耗時過長(如 Opening tables 久 → 表太多 / executing 久 → 需優化索引)。
  • 輔助 EXPLAIN 與慢查詢日誌進行多維度調優。

作者:skate | 日期:2012/02/17

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