2012-11-22 62 views
0

我在.sql文件中有一些基準查詢。如果我在mysql中使用源代碼執行它們,mysql將在每次查詢後顯示運行時間。還有頁面和頁面查詢輸出。有什麼方法可以獲得所有查詢的總運行時間?mysql中多個查詢的總運行時間

非常感謝!

+0

從最新的lol中減去最早的時間戳 – Drew

+0

他們被記錄到表中或我們想知道 – Drew

回答

0

感謝您的所有建議。 我最終創建了另一個表,只是爲了記錄每個查詢在.sql文件中的開始和結束時間。

我編輯了.sql文件,在每個原始查詢後面添加一條插入語句來記錄時間。最後,我可以查詢這個「時間」表來分析.sql文件的執行情況。

1

您可以使用MySQL內置的分析支持加入這行到你的my.cnf

SET profiling=1; 

這使您可以很容易地看到它了每個查詢的時間:

mysql> SHOW PROFILES; 
+----------+-------------+-------------------------------------------------------------------+ 
| Query_ID | Duration | Query                | 
+----------+-------------+-------------------------------------------------------------------+ 
|  1 | 0.33174700 | SELECT COUNT(*) FROM myTable WHERE extra LIKE '%zkddj%'   | 
|  2 | 0.00036600 | SELECT COUNT(id) FROM myTable          | 
|  3 | 0.00087700 | CREATE TEMPORARY TABLE foo LIKE myTable       | 
|  4 | 33.52952000 | INSERT INTO foo SELECT * FROM myTable        | 
|  5 | 0.06431200 | DROP TEMPORARY TABLE foo           | 
+----------+-------------+-------------------------------------------------------------------+ 
5 rows in set (0.00 sec) 

你可以他們總結時間得到總時間:

SELECT SUM(Duration) from information_schema.profiling; 

你可以找到有關MySQL的性能分析here的更多詳細信息。

您可以運行它的另一種方法是從命令行執行SQL查詢並使用Unix time命令來執行執行。但是,這可能不會給你最精確的時間。此外,除非您將它與MySQL配置文件結合使用,否則它不會給您詳細列出每個查詢所花費的時間。

+0

非常感謝,aam1r。有沒有辦法顯示查詢和持續時間。我的查詢太長,很難查看。或者有什麼方法可以查詢此「配置文件」表?如果我要再次運行基準測試,如何清理配置文件表? –

+0

@AlfredZhong:我還沒有嘗試過,但我會建議嘗試關閉'information_schema.profiling'的運行查詢 - 就像我們要得到總和一樣。所以,'SELECT Query_ID,Duration FROM information_schema.profiling'來獲取查詢ID和持續時間。也許有更好的方法來做到這一點。如果有的話,我很想知道它。 –

1

您可以修改.sql以創建帶有時間戳的開始和結束行,然後進行相減,而不必帶出Excel電子表格並添加它。

+0

非常感謝,@Drew。 mysql放置時間戳的語法是什麼? –