mysql5.6使用profile工具分析sql
生活随笔
收集整理的這篇文章主要介紹了
mysql5.6使用profile工具分析sql
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mysql性能這塊,其實都是DBA做的事情,一問DBA的朋友就會很快拿出一大堆工具就讓你來使用,并且幫助你排查出很多問題。并不是每個公司都有DBA的,很多公司都是開發來弄的,如果業務量特別大并且上來的時候,我們可以招聘一個DBA,一般運維都會幫助來弄。
profile使用工具;
查看自己版本的是否開啟了Profile, profiling=on是開啟了這個profile功能,
mysql>?select?version(); +------------+ |?version()??| +------------+ |?5.6.35-log?| +------------+ 1?row?in?set?(0.00?sec)mysql>?show?variables?like?'%profil%'; +------------------------+-------+ |?Variable_name??????????|?Value?| +------------------------+-------+ |?have_profiling?????????|?YES???| |?profiling??????????????|?ON????| |?profiling_history_size?|?15????| +------------------------+-------+ 3?rows?in?set?(0.01?sec)Help profile 查看一下,profile的幫助,但是看一下,官方在這個時候會讓你注意一下,profile會在5.7以后會廢棄了,不用了,所以先查看一下自己的版本,估計好多公司都沒用到5.7,還是老的版本。
輸入sql語句查看一下,profiles是否產生了。
mysql>?SELECT?count(*)?from?table?where?publishtime?>='2017-01-01'?and?publishtime?<='2017-08-30'->?; +----------+ |?count(*)?| +----------+ |??1317564?| +----------+ 1?row?in?set?(2.46?sec)mysql>?show?profiles; +----------+------------+--------------------------------------------------------------------------------------------------------+ |?Query_ID?|?Duration???|?Query??????????????????????????????????????????????????????????????????????????????????????????????????| +----------+------------+--------------------------------------------------------------------------------------------------------+ |????????1?|?0.00109175?|?show?variables?like?'%profil%'?????????????????????????????????????????????????????????????????????????| |????????2?|?2.46288425?|?SELECT?count(*)?from?table?where?publishtime?>='2017-01-01'?and?publishtime?<='2017-08-30'?| +----------+------------+--------------------------------------------------------------------------------------------------------+ 2?rows?in?set,?1?warning?(0.00?sec)mysql>獲取指定的開銷: 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?| +----------------------+----------+ 15?rows?in?set,?1?warning?(0.00?sec)可以看到Sending?data?,這個還是比較耗時,這個是sending?data?不是發送數據的意思, 是收集和發送集合的數據。查看cpu的數據: mysql>?show?profile?cpu?for?query?2; +----------------------+----------+----------+------------+ |?Status???????????????|?Duration?|?CPU_user?|?CPU_system?| +----------------------+----------+----------+------------+ |?starting?????????????|?0.000147?|?0.000000?|???0.000000?| |?checking?permissions?|?0.000023?|?0.000000?|???0.000000?| |?Opening?tables???????|?0.000047?|?0.000000?|???0.000000?| |?init?????????????????|?0.000081?|?0.000000?|???0.000000?| |?System?lock??????????|?0.000031?|?0.000000?|???0.000000?| |?optimizing???????????|?0.000034?|?0.000000?|???0.000000?| |?statistics???????????|?0.001650?|?0.001000?|???0.001000?| |?preparing????????????|?0.000046?|?0.000000?|???0.000000?| |?executing????????????|?0.000018?|?0.000000?|???0.000000?| |?Sending?data?????????|?2.460588?|?2.464625?|???0.025996?| |?end??????????????????|?0.000041?|?0.000000?|???0.000000?| |?query?end????????????|?0.000019?|?0.000000?|???0.000000?| |?closing?tables???????|?0.000022?|?0.000000?|???0.000000?| |?freeing?items????????|?0.000055?|?0.000000?|???0.000000?| |?cleaning?up??????????|?0.000085?|?0.000000?|???0.000000?| +----------------------+----------+----------+------------+ 15?rows?in?set,?1?warning?(0.00?sec)也是這個操作,type:??ALL????????????????--顯示所有的開銷信息??|?BLOCK?IO???????????--顯示塊IO相關開銷??|?CONTEXT?SWITCHES???--上下文切換相關開銷??|?CPU????????????????--顯示CPU相關開銷信息??|?IPC????????????????--顯示發送和接收相關開銷信息??|?MEMORY?????????????--顯示內存相關開銷信息??|?PAGE?FAULTS????????--顯示頁面錯誤相關開銷信息??|?SOURCE?????????????--顯示和Source_function,Source_file,Source_line相關的開銷信息??|?SWAPS??????????????--顯示交換次數相關開銷的信息這里邊的可以任意特換就可以看到對應的參數的開銷,自己試試看。轉載于:https://blog.51cto.com/shangdc/1961085
總結
以上是生活随笔為你收集整理的mysql5.6使用profile工具分析sql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mapper中的CDATA标签的用法
- 下一篇: 高性能MySQL读书笔记---查询优化