MySQL profiling的用法,mysqlprofiling

來源:互聯網
上載者:User

MySQL profiling的用法,mysqlprofiling

    MySQL資料庫最常見的兩個瓶頸是CPU和I/O的瓶頸,CPU在飽和的時候一般發生在資料裝入記憶體或從磁碟上讀取資料時候。磁碟I/O瓶頸發生在裝入資料遠大於記憶體容量的時候,如果應用分布在網路上,那麼查詢量相當大的時候那麼平瓶頸就會出現在網路上,我們可以用mpstat, iostat, sar和vmstat來查看系統的效能狀態。今天我們不討論區伺服器硬體的效能瓶頸,只是談談MySQL系統本身,通常需要對資料庫進行分析,常見的分析手段有慢查詢日誌,EXPLAIN 分析查詢,profiling分析以及show命令查詢系統狀態及系統變數,通過定位分析效能的瓶頸,才能更好的最佳化資料庫系統的效能。

     這個是一系列的文章,今天只談SHOW PROFILE Syntax。通過它我們可以清楚的知道某條Query的效能瓶頸到底在哪裡,是消耗的 CPU計算太多,還是需要的的 IO 操作太多?具體的做法如下:

    1.開啟profiling參數
        set profiling=1;
    2.執行Query
        select * from a;
    3.擷取系統中儲存的所有 Query 的 profile 概要資訊
        show profiles;
    4.針對單個 Query 擷取詳細的 profile 資訊。
        show profile all for query 1;

文法如下:

    SHOW PROFILE [type [, type] ... ]
       [FOR QUERY n]
       [LIMIT row_count [OFFSET offset]]

    type:
         ALL:顯示所有的開銷資訊
       | BLOCK IO:顯示塊IO相關開銷
       | CONTEXT SWITCHES:環境切換相關開銷
       | CPU:顯示使用者CPU時間、系統CPU時間
       | IPC:顯示發送和接收相關開銷資訊
       | MEMORY:目前沒有實現
       | PAGE FAULTS:顯示分頁錯誤相關開銷資訊  
       | SOURCE:顯示和Source_function,Source_file,Source_line相關的開銷資訊
       | SWAPS:顯示交換次數相關開銷的資訊 


以上資訊也可以通過INFORMATION_SCHEMA.PROFILING表中的資訊來查看。


  參考資料:
       https://dev.mysql.com/doc/refman/5.7/en/show-profile.html
       https://dev.mysql.com/doc/refman/5.7/en/profiling-table.html

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.