一。前言
當我們要對某一條sql的效能進行分析時,可以使用它。
profiling是從 mysql5.0.3版本以後才開放的。
啟動profile之後,所有查詢包括錯誤的語句都會記錄在內。
關閉會話或者set profiling=0 就關閉了。(如果將profiling_history_size引數設定為0,同樣具有關閉mysql的profiling效果。)
此工具可用來查詢sql執行狀態,system lock和table lock 花多少時間等等,
對定位一條語句的i/o消耗和cpu消耗 非常重要。(sql 語句執行所消耗的最大兩部分資源就是io和cpu)
--在mysql5.7之後,profile資訊將逐漸被廢棄,mysql推薦使用performance schema
二。流程
簡易流程大概如下:
set profiling=1; //開啟分析
run your sql1;
run your sql2;
show profiles;//檢視sql1,sql2的語句分析
show profilefor query 1; //檢視sql1的具體分析
show profileall 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 效能分析 Mysql效能分析
優化mysql資料庫效能的十個引數 1 max connections 允許的同時客戶的數量。增加該值增加 mysqld 要求的檔案描述符的數量。這個數字應該增加,否則,你將經常看到 too many connections 錯誤。預設數值是100,我把它改為1024 2 record buffer...
mysql 語句分析 MySQL語句執行分析
今天客戶那邊遇到乙個問題 多選檔案進行操作,資料量一大後台處理就特別慢,瀏覽器顯示504超時。為了驗證問題是否出在sql語句,所以用以下方法來分析 查詢sql執行記錄 explain 分析 mysql 語句執行時間 下面會分別介紹三個方法的開啟方法。查詢sql執行記錄 查詢日誌功能是否開啟 show...
mysql查詢日誌分析 mysql日誌分析
日誌檔案 log 就是乙個跟蹤記錄的列表,它可以協助我們時刻掌握系統及應用服務的動作狀態,在故障排查的時候提供最詳細準確地資訊,幫助我們快速查詢原因,減少我們憑主觀的經驗去猜測,這樣的答案更具有說服力,機器通常是不會撒謊的。任何的系統,無論是作業系統 資料庫 應用伺服器他們都會有自己的log檔案,而...