1. 程式人生 > >mysql 測試sql執行時間

mysql 測試sql執行時間

要想優化一條 Query,我們就需要清楚的知道這條 Query 的效能瓶頸到底在哪裡,是消耗的 CPU計算太多,還是需要的的 IO 操作太多?要想能夠清楚的瞭解這些資訊,在 MySQL 5.0 和 MySQL 5.1正式版中已經可以非常容易做到了,那就是通過 Query Profiler 功能。


MySQL 的 Query Profiler 是一個使用非常方便的 Query 診斷分析工具,通過該工具可以獲取一條Query 在整個執行過程中多種資源的消耗情況,如 CPU,IO,IPC,SWAP 等,以及發生的 PAGE FAULTS,CONTEXT SWITCHE 等等,同時還能得到該 Query 執行過程中 MySQL 所呼叫的各個函式在原始檔中的位置。

下面我們看看 Query Profiler 的具體用法。

1、 開啟 profiling 引數

[email protected] : (none) 10:53:11> set profiling=1;
Query OK, 0 rows affected (0.00 sec)

通過執行 “set profiling”命令,可以開啟關閉 Query Profiler 功能。


2、 執行 Query

複製程式碼
... ...
[email protected] : test 07:43:18> select status,count(*)
-> from test_profiling group by status;
+----------------+----------+ | status | count(*) | +----------------+----------+ | st_xxx1 | 27 | | st_xxx2 | 6666 | | st_xxx3 | 292887 | | st_xxx4 | 15 | +----------------+----------+ 5 rows in set (1.11 sec) ... ...
複製程式碼

在開啟 Query Profiler 功能之後,MySQL 就會自動記錄所有執行的 Query 的 profile 資訊了。


3、獲取系統中儲存的所有 Query 的 profile 概要資訊

複製程式碼
[email protected] : test 07:47:35> show profiles;
+----------+------------+------------------------------------------------------------+
| Query_ID | Duration | Query
|
+----------+------------+------------------------------------------------------------+
| 1 | 0.00183100 | show databases
|
| 2 | 0.00007000 | SELECT DATABASE()
|
| 3 | 0.00099300 | desc test
|
| 4 | 0.00048800 | show tables
|
| 5 | 0.00430400 | desc test_profiling
|
| 6 | 1.90115800 | select status,count(*) from test_profiling group by status |
+----------+------------+------------------------------------------------------------+
3 rows in set (0.00 sec)
複製程式碼

通過執行 “SHOW PROFILE” 命令獲取當前系統中儲存的多個 Query 的 profile 的概要資訊。


4、針對單個 Query 獲取詳細的 profile 資訊。


在獲取到概要資訊之後,我們就可以根據概要資訊中的 Query_ID 來獲取某個 Query 在執行過程中

詳細的 profile 資訊了,具體操作如下:


上面的例子中是獲取 CPU 和 Block IO 的消耗,非常清晰,對於定位效能瓶頸非常適用。希望得到取其他的資訊,都可以通過執行 “SHOW PROFILE *** FOR QUERY n” 來獲取,各位讀者朋友可以自行測試熟悉。

相關推薦

mysql 測試sql執行時間

要想優化一條 Query,我們就需要清楚的知道這條 Query 的效能瓶頸到底在哪裡,是消耗的 CPU計算太多,還是需要的的 IO 操作太多?要想能夠清楚的瞭解這些資訊,在 MySQL 5.0 和 MySQL 5.1正式版中已經可以非常容易做到了,那就是通過 Query

MySQL測試SQL執行的速度測試

引言: 在Mysql中如何測試單個SQL的執行時間,是非常有助於我們理解其中的問題的,本文將介紹如何定位SQL.的使用時間和執行計劃。 1.  檢視Mysql關於profile的設定show variables like '%pro%'; #查驗mysql中profile

mysql如何記錄sql執行時間

1、開啟和關閉mysql> set profiling=1;mysql> set profiling=0; information_schema 的 database 會建立一個PROFIL

MySQLSQL執行性能分析以及性能優化策略和步驟

itl com pos url sql href class 分析 www. MySQL 的性能(下篇)—— 性能優化方法MySQL的SQL執行性能分析以及性能優化策略和步驟

MySQLSQL執行計劃分析

https://blog.csdn.net/da_guo_li/article/details/79008016 執行計劃能告訴我們什麼?     當我們的系統上線後資料庫的記錄不斷增加,之前寫的一些SQL語句或者一些ORM操作效率變得非常低。我們不得不考慮SQ

Linux應用程式開發筆記:測試程式碼執行時間

  #include <stdio.h> #include <sys/times.h> #include <unistd.h> void main(void) { double duration; clock_t start,

mysqlsql執行計劃詳解

引言: 實際專案開發中,由於我們不知道實際查詢的時候資料庫裡發生了什麼事情,資料庫軟體是怎樣掃描表、怎樣使用索引的,因此,我們能感知到的就只有 sql語句執行的時間,在資料規模不大時,查詢是瞬間的,因此,在寫sql語句的時候就很少考慮到效能的問題。但是當資料規模增大,如千

mysqlsql執行計劃

MySql提供EXPLAIN語法用來進行查詢分析,在SQL語句前加一個“EXPLAIN”,例: EXPLAIN SELECT * FROM T_CLASS WHERE CLASS_NAME="網路工程" 執行結果: 執行結果解釋: select_type:

C++實現測試函式執行時間函式

使用方法: gettime(函式名,[要測試函式的引數,在0~3個範圍內],時間單位) // 時間單位如果不寫,預設為毫秒。 // 時間單位的格式: // ns 納秒 // us 微秒 // ms 毫秒 // s 秒 // min 分鐘 //

c語言測試程式執行時間

//test time   time.hclock_t start, finish;double Total_time; start = clock();finish = clock();Total_time = (double)(finish-start) / CLOCKS

C# 測試程式碼執行時間

測試程式碼執行的 時間 我們需要用到 Stopwatch 類 這個類裡面有兩個方法 方法名 說明 開始或繼續測量某個時間間隔的執行時間。 停止測量某個時間間隔的執行時間。 tart是開始,stop就是

mysqlsql執行計劃詳解(非常有用)

引言: 實際專案開發中,由於我們不知道實際查詢的時候資料庫裡發生了什麼事情,資料庫軟體是怎樣掃描表、怎樣使用索引的,因此,我們能感知到的就只有 sql語句執行的時間,在資料規模不大時,查詢是瞬間的,因此,在寫sql語句的時候就很少考慮到效能的問題。但是當資料規模增大,

sql優化(查詢大資料量時sql執行時間過長)

問題:Oracle資料庫 sql查詢的優化(成交額統計表的sql查詢時間過長進行的優化) 解決辦法:對sql語句中使用檢視的部分替換為子查詢,對查詢表條件欄位建立索引 引發的問題:在什麼情況下建立索引,及建立索引後引發的開銷有哪些 經查詢oracle的索引機制,摘錄如下:

測試函式執行時間的8種方法——轉

目前,存在著各種計時函式,一般的處理都是先呼叫計時函式,記下當前時間tstart,然後處理一段程式,再呼叫計時函式,記下處理後的時間tend,再tend和tstart做差,就可以得到程式的執行時間,但是各種計時函式的精度不一樣.下面對各種計時函式,做些簡單記錄.

java中測試程式執行時間

好了,師弟師妹們軍訓著,從1.05號放假到現在,我也無所事事了一個星期了,找不到人生的目標,鹹魚地送走了宿舍裡的最後一個兄弟,從上一個學期的放假時,就暗暗下定決心,不要自己最後一個人走,因為這會讓我想到孤獨,想到高三畢業後,離校的那一天,自己拿著行李,回望另一畔的學校,內心

用C/C++語言測試函式執行時間多種方法詳解

方法一:目前,存在著各種計時函式,一般的處理都是先呼叫計時函式,記下當前時間tstart,然後處理一段程式,再呼叫計時函式,記下處理後的時間tend,再tend和tstart做差,就可以得到程式的執行時間,但是各種計時函式的精度不一樣.下面對各種計時函式,做些簡

c# asp.net 測試程式執行時間

using System.Diagnostics; System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 開始監視程式碼執行時間 //要測試的程式碼寫這裡

動態測試方法執行時間的工具BTrace的簡單應用

/* BTrace Script Template */ import com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; @BTrace public class TracingScript {/* put yo

測試程式執行時間-time.h

3. 獲得日曆時間 我們可以通過time()函式來獲得日曆時間(Calendar Time),其原型為:time_t time(time_t * timer); 如果你已經聲明瞭引數timer,你可以從引數timer返回現在的日曆時間,同時也可以通過返回值返回現在的日曆時間,即從一個時間點(例如:1970年1

VS測試程式執行時間

Method1 使用GetTickCount()函式 #include <windows.h> void main() { long start = GetTickCount