如何获得毫秒或微秒加载时间在MySQL

如何获得毫秒或微秒加载时间在MySQL

问题描述:

我已经搜查,搜查,但我没能找到一个简单的方法来得到这样的:如何获得毫秒或微秒加载时间在MySQL

Query OK, 50000 rows affected (0.35 sec) 
在毫秒或微秒

我该如何实现它?

+0

由于mysql不支持DateTime行上的毫秒,因此它可能不支持任何地方的毫秒。 – dcarneiro 2011-02-25 17:22:58

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

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

+0

为什么它说错误1305(42000):功能mydb.last_query_execution_time不存在。 – AMB 2017-09-02 03:26:57

你可以自己时间它在运行的查询代码:

伪代码:

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

我带着同样的问题,我也从Linux控制台我的查询使用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 

$ 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附加到输出,>/dev/null 2>/dev/null忽略查询输出,因此它不会在控制台中每次打印。