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

MySQL Profiling 功能快速定位 SQL 執行耗時

     編輯:MySQL 綜合教學

MySQL Profiling 功能快速定位 SQL 執行耗時

Profiling 是會話級的效能分析工具,能細分 SQL 各階段耗時(解析、優化、執行、鎖等待、發送資料等),適合開發調優。

啟用與關閉

SET profiling = 1;  -- 開啟
SET profiling = 0;  -- 關閉

資訊儲存在 information_schema.PROFILING 表。

實戰步驟

-- 1. 開啟
SET profiling = 1;

-- 2. 執行目標 SQL
SHOW DATABASES;
USE information_schema;
SELECT * FROM PROFILING LIMIT 1;

-- 3. 查看概覽
SHOW PROFILES;
-- 輸出:Query_ID, Duration, Query

-- 4. 查看某查詢詳細階段
SHOW PROFILE FOR QUERY 1;
-- 或
SHOW PROFILE CPU, BLOCK IO FOR QUERY 1;

常見階段解讀

階段含義優化方向
starting查詢開始--
checking permissions權限檢查--
Opening tables開啟表table_open_cache 偏小
System lock系統鎖表鎖爭用
optimizing優化器生成計畫統計資訊過期
executing執行階段全表掃描/鎖等待
Sending data發送資料給客戶端結果集過大/網路延遲
end結束--

注意事項

  • MySQL 5.7+ 預設開啟,8.0 標記棄用,建議改用 Performance Schema 或 EXPLAIN ANALYZE。
  • Profiling 會增加額外開銷,僅在除錯會話開啟,生產環境慎用。
  • SHOW PROFILE 需 SELECT 權限於 information_schema.PROFILING。

總結

Profiling 是輕量級 SQL 微觀分析利器。配合 EXPLAIN 宏觀計畫,能快速定位「慢在哪裡、慢在什麼階段」。

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