MySQL show profile使用說明

2020-12-25 偏執的IT工匠

show profile 和 show profiles 命令用於展示SQL語句的資源使用情況,包括CPU的使用,CPU上下文切換,IO等待,內存使用等,這個命令對於分析某個SQL的性能瓶頸非常有幫助,藉助於show profile的輸出信息,能讓我們知道一個SQL在哪個階段耗時最長,消耗資源最多,從而為SQL優化,提高SQL性能提供重要的依據。

然而,這個命令很快將成為歷史了,因為MySQL 5.7 版本將會逐漸廢棄這個功能,取而代之的是使用Performance Schema,在廢棄之前,先熟悉一下這個功能的用法。

啟用profiling:

使用show profile之前,先啟用profiling, profiling是session級變量,session關閉,該session的profiling信息也會丟失。

mysql> set profiling = 1;

show profiles:

開啟profiling之後,執行幾條SQL,然後執行 show profiles 展示最近執行的多個SQL的執行耗時情況,具體能收集多少個SQL,由參數 profiling_history_size決定,默認值為15,最大值為100。如果設置為0,等同於關閉profiling。show profiles展示的是簡要的耗時信息,如果想了解某個SQL的具體耗時情況,執行show profile 查看。

show profile:

show profile 展示一個SQL語句的執行耗時細節,如果不加 for query {n} 子句,默認展示最新的一次SQL的執行情況,加了for query {n},表示展示第n個 SQL的執行情況。比如看第8個SQL,執行show profile for query 8;

在執行show profile時,可以加上類型子句,比如CPU,IPC等,查看具體某類資源的消耗情況,例如:show profile cpu,ipc for query 8;

show profile 和 show profiles 除了這兩個語句之外,可以展示所有的SQL語句的執行情況,包括有語法錯誤的SQL也會被監測到。比如上面看到了一個show table; 這個SQL有語法錯誤,但仍然被記錄到了show profiles;列表中。

show profile具體語法:

SHOW PROFILE [type [, type] …… ] [FOR QUERY n] [LIMIT row_count [OFFSET offset]]

type: { ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS }

相關焦點

  • MySQL優化:學會使用show profile和trace分析慢查詢
    MySQL優化:定位慢查詢的兩種方法以及使用explain分析SQL在上一節我們學習了定位慢 SQL 及使用 explain 分析慢 SQL,我們也提到了分析慢 SQL 還有 show profile 和 trace 等方法,本節就重點補充學習這兩種方法。
  • 使用explain和show profile來分析SQL語句實現優化SQL語句
    Extra:其他說明以下兩種情況說明:MYSQL 根本不能使用索引,效率會受到重大影響。應儘可能對此進行優化二、通過show profile查看SQL執行過程1、執行步驟首先得開啟profilingset profiling=1
  • Mysql--show命令
    * 顯示所有的資料庫名稱mysql root@localhost:sakila> show
  • MySQL優化:定位慢查詢的兩種方法以及使用explain分析SQL
    確定慢查詢日誌路徑:mysql> show global variables like "datadir";確定慢查詢日誌文件名:mysql> show通過 show processlist定位慢查詢有時慢查詢正在執行,已經導致資料庫負載偏高了,而由於慢查詢還沒執行完,因此慢查詢日誌還看不到任何語句。此時可以使用 show processlist 命令判斷正在執行的慢查詢。show processlist 顯示哪些線程正在運行。
  • 「MySQL系列」分析Sql執行時間及查詢執行計劃(附資料庫和一千萬數據)
    show profiles是mysql提供可以用來分析當前會話中語句執行的資源消耗情 況。可以用來SQL的調優測量。2.1.1 設置MySQL支持profile1.開啟profilingset profiling=1; 2.1.2 show profiles的使用1.
  • MySQL 常用show命令
    命令也是其中之一,在很多使用者中對show命令的使用還容易產生混淆,本文匯集了show命令的眾多用法。a. show tables或show tables from database_name; -- 顯示當前資料庫中所有表的名稱。b. show databases; -- 顯示mysql中所有資料庫的名稱。
  • Linux系統下安裝MySQL的步驟詳解
    目錄:mkdir data 說明:因為mysql服務進程mysqld運行時會訪問data目錄,所以要創建data目錄 在mysql目錄下執行如下命令:用來把目錄的所有者設置為mysql用戶: chown mysql:mysql /opt/mysql –R  截屏如下:
  • 我想說:mysql的join 真的很弱
    可以把mysql當一個黑盒,使用角度來驗證這個結論) 驗證結論的時候,會有很多發現,各位往後看。 三、 實驗環境: vmware10+centos7.4+mysql5.7.22 ,centos7內存4.5G,4核,50G硬碟。mysql配置為2G,特別說明硬碟是SSD。
  • 詳解MySQL資料庫中Show命令的用法
    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中對show命令的使用還容易產生混淆,本文主要介紹了show命令的主要用法。 a. show tables或show tables from database_name; -- 顯示當前資料庫中所有表的名稱。
  • 如何使用MySQL資料庫
    在linux命令環境中,一般使用mysqladmin工具來設置密碼。命令格式為「mysqladmin -u root -p 『舊密碼』 password 『新密碼』」。如下圖:在有密碼的情況下,使用「-p」選項來進行密碼校驗。如下圖:註:進入「mysql>」的資料庫操作環境後,用戶可以輸入各種操作語句對資料庫進行管理。
  • mysql show processlist Time為負數的思考
    二、關於show processlist中的Time實際上show processlist中的信息基本都來自函數 mysqld_list_processes,也就是說每次執行show1、執行命令如果主庫執行常見的命令都會在命令發起的時候調用重載1,設置start_time為命令開始執行的時間如下:堆棧:#0 THD::set_time (this=0x7ffe7c000c90) at /mysqldata/percona-server-locks-detail-5.7.22/sql
  • 學會用 Mysql show processlist 排查問題
    mysql show full processlist 查看當前線程處理情況事發現場每次執行看到的結果應該都有變化,因為是實時的,
  • 重新學習Mysql資料庫1:無廢話MySQL入門
    登錄MySQLmysql -h 127.0.0.1 -u 用戶名 -pmysql -D 所選擇的資料庫名 -h 主機名 -u 用戶名 -pmysql> exit # 退出 使用 「quit;」 或 「\q;」 一樣的效果mysql> status; # 顯示當前mysql的version的各種信息mysql> select version(); # 顯示當前
  • mysql支持原生json使用說明
    點擊上方藍字關注 👆👆MySQL在5.7.8開始對json原生支持,本文將對MySQL中json類型的用法簡單說明
  • 「資料庫分享」MySQL資料庫優化
    查看慢查詢日誌相關配置mysql> show variables like 'slow_query%';修改全局慢查詢日誌配置。key:實際使用的索引。key_len:索引欄位的長度。rows:掃描的行數,行數越少肯定性能越好。extra:額外信息。通過show profiles和show profile for query分析SQL。
  • Linux下MySQL的一些基本使用方法
    2]如何進入mysql資料庫?如果自己想學的弟兄,也不是什麼難事;在windows中操作過mysql的,其實在這裡也是一樣的,mysql是跨平臺的資料庫,用法都是相同的。在mysql資料庫中,每操作一個命令,都是;號結尾的,可能有的新手弟兄,忘記輸入了;號結尾,結果退不出來。:):)1]查看mysql中都有哪些資料庫?
  • 5 分鐘小技巧系列 | 定製化 MySQL Show Processlist 輸出結果
    在 MySQL 中使用 Show Processlist 等指令時常常會出現一些無用信息,比如:Sleep 狀態的。
  • 技術分享 | mysql show processlist Time 為負數的思考
    文章末尾有他著作的《深入理解 MySQL 主從原理 32 講》,深入透徹理解 MySQL 主從,GTID 相關技術知識。
  • MySql 高頻企業面試題
    、查看當前資料庫的字符集show create database DB_NAME;6、查看當前資料庫版本mysql -Vmysql -uroot -ppassowrd -e "use mysql;select
  • MySQL mysqldump 數據導出詳解
    是導出數據過程中使用非常頻繁的一個工具;它自帶的功能參數非常多,文章中會列舉出一些常用的操作,在文章末尾會將所有的參數詳細說明列出來。13導出存儲過程和自定義函數--routines, -Rmysqldump  -uroot -p --host=localhost --all-databases --routines參數說明:--all-databases  , -A導出全部資料庫。