如何在mysql中以毫秒或微秒为单位获取加载时间

时间:2011-02-25 17:18:17

标签: mysql sql time

我一直在搜索和搜索,但我找不到一个简单的方法来解决这个问题:

Query OK, 50000 rows affected (0.35 sec) 

以毫秒或微秒为单位。

我怎样才能实现它?

3 个答案:

答案 0 :(得分:1)

那个时间是由mysql监视器应用程序计算的,并不是由mysql服务器完成的。这不是你可以通过做(例如)select last_query_execution_time()以编程方式检索的东西(这会很好)。

通过在调用查询函数之前和之后获取系统时间,您可以通过在应用程序中执行计时来粗略地模拟它。希望与mysql部分相比,客户端开销最小化。

答案 1 :(得分:1)

您可以在运行查询的代码中自行计时:

伪代码:

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

答案 2 :(得分:1)

我遇到了同样的问题,我使用time

从Linux控制台进行了查询
$ 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

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

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

它提供了来自“mysql”的不同值,但至少是你可以使用的东西,例如这个脚本:

#!/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

执行查询1000次, -f 仅显示实时, -o 输出文件, -a 附加到输出,&gt; / dev / null 2&gt; / dev / null 忽略查询输出,因此每次都不会在控制台中打印。