2012-02-22 25 views
12

Pracuję na hoście Linux z komendą mysql. Mam skrypt, który uruchamia polecenia wsadowe mysql (np. mysql -e "select...") i chciałbym podsumować czas wykonania każdego z poleceń.czas wykonania polecenia linii poleceń mysql?

Czy istnieje sposób, aby uzyskać czas uruchomienia mysql z wiersza poleceń?

Na przykład w mysql trybie interaktywnym, wynik wykonanie przychodzi z czasem, tak:

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

mogę dostać taki sam profil w wierszu polecenia?

Dziękuję

+0

Czy to uczciwa gra, aby rzucić 'time' przed komendami? A może chcesz realistycznego czasu wykonania, który MySQL zużywa podczas obliczania wyników? – sarnold

+0

@arnoldold Tak, chcę zobaczyć "prawdziwy" czas. –

Odpowiedz

3

Oto dokładny składni 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

Można powołać mysql z -vv, to będzie całkiem-print podobny do kiedy jesteś w trybie interaktywnym:

$ 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 

Jeśli rurociągów zapytania, to jest -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 

Czas pojechać na grep. : D