2012-02-22 16 views
12

Estoy trabajando en un host Linux con el comando mysql. Tengo un script que ejecuta comandos batch mysql (como mysql -e "select...") y deseo resumir el tiempo de ejecución de cada uno de los comandos.mysql command line return tiempo de ejecución?

¿Hay alguna forma de obtener el tiempo de ejecución de mysql desde la línea de comandos?

Por ejemplo, en modo interactivo MySQL, resultado de la ejecución viene con un tiempo, así:

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

¿Puedo obtener el mismo perfil en la línea de comandos?

Gracias

+0

¿Es justo lanzar "tiempo" delante de las órdenes? ¿O quieres la _real_ cantidad de tiempo de ejecución que MySQL consume al calcular los resultados? – sarnold

+0

@sarnold Sí, deseo ver el tiempo "real". –

Respuesta

3

Ésta es la sintaxis exacta para 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

Puede invocar MySQL con -vv, lo hará bastante impresión similar a cuando se está en modo interactivo:

$ 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 

Si está canalizando sus preguntas, entonces es -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 

Tiempo es tuyo para grep. : D

Cuestiones relacionadas