程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQLprofiling的用法

MySQLprofiling的用法

編輯:MySQL綜合教程

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表中的信息來查看。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved