2012-02-22 146 views
12

我正在使用mysql命令在Linux主機上工作。我有一個運行批量mysql命令的腳本(如mysql -e "select..."),我希望總結每個命令的執行時間。mysql命令行返回執行時間?

有沒有辦法從命令行獲取mysql執行時間?

例如,在MySQL的交互模式,執行結果帶有一個時間,像這樣:

mysql> select count(*) from trialtable; 
+----------+ 
| count(*) | 
+----------+ 
|  4000 | 
+----------+ 
1 row in set (0.00 sec) 

我可以在命令行相同的配置文件?

謝謝

+0

在命令前面扔'時間'是公平的遊戲嗎?或者你是否希望MySQL在計算結果時所消耗的_real_執行時間? – sarnold 2012-02-22 03:03:13

+0

@sarnold是我希望看到「真實」的時間。 – 2012-02-22 07:32:16

回答

3

這裏是PHP確切的語法。

mysql_query("SET profiling = 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

$query="SELECT some_field_name FROM some_table_name"; 
$result = mysql_query($query); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 

$exec_time_result=mysql_query("SELECT query_id, SUM(duration) FROM information_schema.profiling GROUP BY query_id ORDER BY query_id DESC LIMIT 1;"); 
if (mysql_errno()) { die("ERROR ".mysql_errno($link) . ": " . mysql_error($link)); } 
$exec_time_row = mysql_fetch_array($exec_time_result); 

echo "<p>Query executed in ".$exec_time_row[1].' seconds'; 
0

您可以-vv調用MySQL的,它將類似於漂亮地打印到當你在交互模式:

$ mysql -vv -u myUser -pMyPass DBname -e 'select count(*) from mytable;' 
-------------- 
select count(*) from mytable 
-------------- 

+----------+ 
| count(*) | 
+----------+ 
| 1068316 | 
+----------+ 
1 row in set (0.00 sec) 

Bye 

如果你在你的管道查詢,那麼它的-vvv

$ echo 'select count(*) from mytable;' | mysql -vvv -u myUser -pMyPass DBname 
-------------- 
select count(*) from mytable 
-------------- 

+----------+ 
| count(*) | 
+----------+ 
| 1068316 | 
+----------+ 
1 row in set (1.34 sec) 

Bye 

時間是你的grep。 :D