在不列印到控制檯的情況下,我怎麼檢視 MySQL 查詢所花費的時間?


要檢查這個,我們需要有概要資訊,該資訊指明在當前會話期間執行的語句的資源使用情況。可以使用 SHOW PROFILESHOW PROFILES 語句獲取概要資訊。

在執行這些語句之前,必須將概要會話變數設定為 1,如下所示 −

mysql> set profiling = 1;
Query OK, 0 rows affected (0.00 sec)

現在,如果我們要執行 SHOW PROFILES 語句,那麼它將顯示傳送到伺服器的最新的語句列表,包括持續時間和查詢 ID。

mysql> show profiles;
+----------+------------+--------------------------------------+
| Query_ID | Duration   | Query                                |
+----------+------------+--------------------------------------+
| 1        | 0.01602200 | drop table if exists t1              |
| 2        | 0.57223450 | create table t1(id int)              |
| 3        | 0.00015425 | show profile for query1              |
| 4        | 0.22945050 | create table e1(id int)              |
| 5        | 0.09977025 | insert into e1(id) values(3),(4),(5) |
+----------+------------+--------------------------------------+
5 rows in set (0.00 sec)

現在假設我們要檢查特定查詢的持續時間,那麼我們可以對 query query_no 語句執行 SHOW PROFILE。例如,如果我們為 query_id = 5 執行該語句,那麼輸出如下 −

mysql> show profile for query 5;
+------------------------------+--------------+
| Status                       | Duration     |
+------------------------------+--------------+
| starting                     | 0.000138     |
| checking permissions         | 0.000024     |
| Opening tables               | 0.000057     |
| System lock                  | 0.035186     |
| init                         | 0.000035     |
| update                       | 0.021484     |
| Waiting for query cache lock | 0.000021     |
| update                       | 0.000005     |
| end                          | 0.000024     |
| query end                    | 0.042700     |
| closing tables               | 0.000017     |
| freeing items                | 0.000076     |
| logging slow query           | 0.000003     |
| cleaning up                  | 0.000002     |
+------------------------------+--------------+
14 rows in set (0.00 sec)

更新日期:2019 年 7 月 30 日

153 次瀏覽

啟動您的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.