MySQL性能分析語句show profile

    1. 介紹
  1. Query Profiler是MYSQL自帶的一種query診斷分析工具,通過它可以分析出一條SQL語句的性能瓶頸在什麼地方。
  2. 通常我們是使用的explain,以及slow query log都無法做到精確分析,但是Query Profiler卻可以定位出一條SQL語句執行的各種資源消耗情況,比如CPU,IO等,以及該SQL執行所耗費的時間等。不過該工具只有在MYSQL 5.0.37以及以上版本中才有實現。
  3. 默認的情況下,MYSQL的該功能沒有打開,需要自己手動啓動
    1. 語句使用
  4. show profile show profiles 語句可以展示當前會話(退出session後,profiling重置爲0) 中執行語句的資源使用情況.
  5. show profiles :以列表形式顯示最近發送到服務器上執行的語句的資源使用情況.顯示的記錄數由變量:profiling_history_size 控制,默認15條

  1. show profile: 展示最近一條語句執行的詳細資源佔用信息,默認顯示 Status和Duration兩列

  1. show profile 還可根據 show profiles 列表中的 Query_ID ,選擇顯示某條記錄的性能分析信息

 

    1. 開啓Profile功能
  1. Profile 功能由MySQL會話變量 : profiling控制,默認是OFF關閉狀態。
  2. 查看是否開啓了Profile功能:

    * select @@profiling;

    * show variables like ‘%profil%’;

  1. 開啓profile功能

* set profiling=1; --1是開啓、0是關閉

    1. 示例
  1. 查看是否打開了性能分析功能

select @@profiling;

  1. 打開 profiling 功能

set profiling=1;

  1. 執行sql語句

  1. 執行 show profiles 查看分析列表

  1. 查詢第二條語句的執行情況

show profile for query 2;

  1. 可指定資源類型查詢

show profile cpu,swaps for query 2;

具體的性能優化細節

  1. 合理的創建及使用索引(考慮數據的增刪情況)
  2. 合理的冗餘字段(儘量建一些大表,考慮數據庫的三範式和業務設計的取捨)
  3. 使用SQL要注意一些細節:select語句中儘量不要使用*、count(*),WHERE語句中儘量不要使用1=1、in語句(建議使用exists)、注意組合索引的創建順序按照順序組着查詢條件、儘量查詢粒度大的SQL放到最左邊、儘量建立組合索引
  4. 合理利用慢查詢日誌、explain執行計劃查詢、show profile查看SQL執行時的資源使用情況
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章