明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Mysql調(diào)優(yōu)之profile的使用方法

[摘要]本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。在我們做mysql性能分析的時(shí)候,最常用的有三種方式:(1)慢查...
本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Mysql調(diào)優(yōu)之profile的使用方法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

  1. 在我們做mysql性能分析的時(shí)候,最常用的有三種方式:

    (1)慢查詢 (分析出現(xiàn)出問(wèn)題的sql)
    (2)Explain (顯示了mysql如何使用索引來(lái)處理select語(yǔ)句以及連接表?梢詭椭x擇更好的索引和寫出更優(yōu)化的查詢語(yǔ)句)
    (3)Profile(查詢到 SQL 會(huì)執(zhí)行多少時(shí)間, 并看出 CPU/Memory 使用量, 執(zhí)行過(guò)程中 Systemlock, Table lock 花多少時(shí)間等等.)

  2. 本章主要是對(duì)profile做簡(jiǎn)單的概述,用來(lái)對(duì)某一條sql語(yǔ)句進(jìn)行性能分析。

  3. Profiling是從 mysql5.0.3版本以后才開(kāi)放的。但是在mysql5.7之后,profile信息將逐漸被廢棄,mysql推薦使用performance schema。

  4. profile此工具可用來(lái)查詢SQL執(zhí)行狀態(tài),System lock和Table lock 花多少時(shí)間等等,對(duì)定位一條語(yǔ)句的I/O消耗和CPU消耗 非常重要。(SQL 語(yǔ)句執(zhí)行所消耗的最大兩部分資源就是IO和CPU)

profile工具使用

  1. 查看自己的mysql版本:

    mysql> select version(); 
    +------------+
      version()   
    +------------+
      5.6.35-log  
    +------------+
  2. 查看是否開(kāi)啟profile功能(profiling=on代表開(kāi)啟):

    mysql> show variables like '%profil%';
    +------------------------+-------+
      Variable_name            Value  
    +------------------------+-------+
      have_profiling          YES   
      profiling                OFF     
      profiling_history_size   15     
    +------------------------+-------+
  3. 開(kāi)啟profile:

    mysql> set profile=1;
  4. 開(kāi)啟profile之后,執(zhí)行要分析的sql語(yǔ)句:

    mysql> select t1.*,t2.action from pre_forum_thread as t1
    left join 
    (select a.* from pre_forum_threadmod as a,(select tid,max(dateline) as dateline from pre_forum_threadmod group by tid) as b
    where a.tid=b.tid and a.dateline=b.dateline) as t2
    on t1.tid=t2.tid
    where t1.displayorder>=0 and t1.fid in (47,49) and t1.tid > 100318 
    and (t1.authorid =7683017 or t2.action<>'DWN' or t2.action is null )
    order by t1.dateline desc limit 20;
  5. 查看生成的profile信息:

    mysql> show profiles;
    +----------+------------+--------------------------------------------------------------------------------------------------------+
      Query_ID   Duration    Query                                                                                                   
    +----------+------------+--------------------------------------------------------------------------------------------------------+
             1   1.37183777   select t1.*,t2.action from pre_forum_thread as t1   
             2   0.00078796   show columns from `bbs`.`t2`  
             3   0.00150425   show columns from `bbs`.`pre_forum_thread`  
    +----------+------------+--------------------------------------------------------------------------------------------------------+
  6. 獲取指定的query語(yǔ)句的開(kāi)銷:

    mysql> show profile for query 2; 
    +----------------------+----------+
      Status                Duration  
    +----------------------+----------+
      starting              0.000147  
      checking permissions   0.000023  
      Opening tables        0.000047  
      init                  0.000081  
      System lock            0.000031  
      optimizing            0.000034  
      statistics            0.001650  
      preparing              0.000046  
      executing              0.000018  
      Sending data          2.460588  
      end                    0.000041  
      query end              0.000019  
      closing tables        0.000022  
      freeing items          0.000055  
      cleaning up            0.000085  
    +----------------------+----------+
  7. 關(guān)閉profile:

    mysql> set profiling=0;
  8. 相關(guān)具體的參數(shù):

    type: 
       ALL                --顯示所有的開(kāi)銷信息 
       BLOCK IO          --顯示塊IO相關(guān)開(kāi)銷 
       CONTEXT SWITCHES  --上下文切換相關(guān)開(kāi)銷 
       CPU                --顯示CPU相關(guān)開(kāi)銷信息 
       IPC                --顯示發(fā)送和接收相關(guān)開(kāi)銷信息 
       MEMORY            --顯示內(nèi)存相關(guān)開(kāi)銷信息 
       PAGE FAULTS        --顯示頁(yè)面錯(cuò)誤相關(guān)開(kāi)銷信息 
       SOURCE            --顯示和Source_function,Source_file,Source_line相關(guān)的開(kāi)銷信息 
       SWAPS              --顯示交換次數(shù)相關(guān)開(kāi)銷的信息 
    
    例如,想要查看cpu和io開(kāi)銷可以執(zhí)行命令:
    mysql> SHOW profile CPU,BLOCK IO  FOR query 2;

總結(jié)

  1. 一般簡(jiǎn)易的流程:

    (1)set profiling=1; //打開(kāi)profile分析
    (2)run your sql1;
    (3)run your sql2;
    (4)show profiles;    //查看sql1,sql2的語(yǔ)句分析
    (5)SHOW profile CPU,BLOCK IO io FOR query 1; //查看CPU、IO消耗
    (6)set profiling=0; //關(guān)閉profile分析

以上就是Mysql調(diào)優(yōu)之profile的使用方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。