2011-02-25 8 views

Respuesta

1

Ese tiempo lo calcula la aplicación de monitor mysql y no lo hace el servidor mysql. No es algo que pueda recuperar programáticamente al hacer (digamos) select last_query_execution_time() (lo que sería bueno).

Puede simularlo de forma aproximada haciendo el tiempo en su aplicación, tomando el tiempo del sistema antes y después de llamar a la función de consulta. Es de esperar que la sobrecarga del lado del cliente sea mínima en comparación con la parte de mysql.

+0

por qué dice ERROR 1305 (42000): FUNCIÓN mydb.last_query_execution_time no existe. – AMB

1

Se podría medir el tiempo por sí mismo en el código que se ejecuta la consulta:

Pseudo código:

double StartTime = <now> 
Execute SQL Query 
double QueryTime = <now> - StartTime 
1

Vine con el mismo problema, lo hice mis preguntas desde una consola Linux a través de time

$ time mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table" 

------------ 
count(1) 
------------ 
750 
------------ 

real 0m0.269s 
user 0m0.014s 
sys 0m0.015s 

o

$ time -f"%e" mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table" 

------------ 
count(1) 
------------ 
750 
------------ 
0.24 

Se da valores diferentes de "mysql", pero al menos es algo que se puede trabajar con, por ejemplo, esta secuencia de comandos:

#!/bin 
temp = 1 
while [ $temp -le 1000] 
do 
    /usr/bin/time -f"%e" -o"/home/admin/benchmark.txt" -a mysql --user="user" -D "DataBase" -e "SELECT SQL_NO_CACHE COUNT(1) FROM table" > /dev/null 2> /dev/null 
    let temp=$temp+1 
done 

Ejecutar la consulta 1000 veces, -f muestra sólo el tiempo real, - o el archivo de salida, -a se agrega a la salida, >/dev/null 2>/dev/null ignora el resultado de la consulta, por lo que no se imprime en la consola cada vez.

Cuestiones relacionadas