首頁  >  文章  >  資料庫  >  Mysql分析-profile詳解

Mysql分析-profile詳解

黄舟
黄舟原創
2017-03-02 16:12:431598瀏覽


一。前言

當我們要對某一條sql的效能進行分析時,可以使用它。

Profiling是從 mysql5.0.3版本以後才開的。

啟動profile之後,所有查詢包含錯誤的語句都會記錄在內。

關閉會話或set profiling=0 就關閉了。 (如果將profiling_history_size參數設為0,同樣具有關閉MySQL的profiling效果。)

此工具可用於查詢SQL執行狀態,System lock和Table lock 花多少時間等等,

對定位一條語句的I/O消耗CPU消耗 非常重要。 (SQL 語句執行所消耗的最大兩部分資源就是IOCPU)

--在mysql5.7之後,profile訊息會逐漸被放棄,mysql推薦使用performance schema


二。流程

簡易流程大概如下:

set profiling=1;  				//打开分析

run your sql1;

run your sql2;

show profiles;					//查看sql1,sql2的语句分析

show profile for query 1;		//查看sql1的具体分析

show profile ALL for query 1;	//查看sql1相关的所有分析【主要看i/o与cpu,下边分析中有各项意义介绍】

set profiling=0;  				//关闭分析






三。意義分析







上圖中橫向欄意義


+------------- ---------+----------+----------+------------+

#"Status": "query end", 狀態

###"Duration": "1.751142", 持續時間##### #

"CPU_user": "0.008999", cpu用戶

"CPU_system": "0.003999", cpu系統

## "Context_voluntary": "98", 上下文主動切換

"Context_involuntary": "0", 上下文被動切換

#"Block_ops_in": "8", 阻塞的輸入操作

"Block_ops_out": "32", 阻塞的輸出操作

"Messages_sent": "0 ", 訊息發出

"Messages_received": "0", 訊息接受

"Page_faults_major": "0", 主分頁錯誤

"Page_faults_minor": "0", 次分頁錯誤

"Swaps": "0", 交換次數

"Source_function": "mysql_execute_command", 來源功能

"Source_file": "sql_parse.cc", 原始檔


#"Source_line": "4465" 原始碼行

#+------------------- ---+----------+----------+------------+

#上圖中縱向欄意義

+----------------------+------- ---+----------+------------+

starting:開始

checking permissions:檢查權限

Opening tables:開啟表格

init :初始化System lock :系統鎖定optimizing : 最佳化

statistics : 統計

preparing :準備

executing :執行

######Sending data :傳送資料##################Sorting result :排序##########

end :结束

query end :查询 结束

closing tables : 关闭表 /去除TMP 表

freeing items : 释放物品

cleaning up :清理


+----------------------+----------+----------+------------+


一般情况下,常用以下语句也就够了 :

mysql->SHOW profile CPU,BLOCK IO io FOR query 2;

 以上就是Mysql分析-profile详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn