2012-02-22 4 views
12

私はmysqlコマンドでLinuxホストで作業しています。私はバッチmysqlコマンド(mysql -e "select..."のような)を実行するスクリプトがあり、私は各コ​​マンドの実行時間を要約したい。mysqlコマンドラインは実行時間を返しますか?

コマンドラインからmysql exec時間を取得する方法はありますか?

例えば、mysqlの対話モードでは、実行結果は次のように、時間が付属しています:

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

は、私は、コマンドラインで同じプロファイルを得ることができますか?

あなたは

+0

コマンドの前に 'time'を投げるのは公正なゲームですか?または、結果を計算する際にMySQLが消費する実行時間の_real_量を望みますか? – sarnold

+0

@sarnoldはい「本当の」時間を見たいと思っています。 –

答えて

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

関連する問題