我正在做一些优化工作,我注意到在一些mysql转储中,人们在文章和问题中发布(我现在找不到了,因为我实际上正在寻找),有高精度的执行时间(0.05985215秒而不是0.06秒)。
如何才能在命令行上查看查询的这些更精确的时间?
编辑
这方面的示例如下:
+----------+
| COUNT(*) |
+----------+
| 11596 |
+----------+
1 row in set (0.05894344 sec)使用性能分析可以在一定程度上解决这个问题,但是会产生太长的输出,我必须记得启用它。我只是在寻找一个简单的高精度的持续时间。
SET profiling = 1;
<query>
SHOW PROFILES;给了我类似这样的东西:
+----------------------+-----------+
| Status | Duration |
+----------------------+-----------+
| (initialization) | 0.000005 |
| checking permissions | 0.00001 |
| Opening tables | 0.000499 |
| Table lock | 0.000071 |
| preparing | 0.000018 |
| Creating tmp table | 0.00002 |
| executing | 0.000006 |
| Copying to tmp table | 6.565327 |
| Sorting result | 0.000431 |
| Sending data | 0.006204 |
| query end | 0.000007 |
| freeing items | 0.000028 |
| closing tables | 0.000015 |
| logging slow query | 0.000005 |
+----------------------+-----------+
14 rows in set (0.00 sec)发布于 2011-06-03 02:26:53
看起来最好的解决方案是启用性能分析。目前还没有其他成功的线索。
最好的答案是,使用查询分析。
SET profiling = 1;
<query>
SHOW PROFILES;发布于 2011-05-25 22:35:15
这个问题最好的答案是查看source of the mysql command line client。relevant piece of code,
static void nice_time(double sec,char *buff,bool part_second)
{
// ...
if (part_second)
sprintf(buff,"%.2f sec",sec);
else
sprintf(buff,"%d sec",(int) sec);
}具有硬编码到(2)中的秒值的小数点后的位数。这将使我得出结论,使用库存mysql安装不可能获得更高的精度时间。
当然,您可以修补此代码,使其可配置,等等,和install from source。我猜这就是你提到的文章和问题中的人正在做的事情。你找到答案的最好机会就是直接问他们(参见我对你的问题的评论)。
发布于 2011-05-24 23:59:52
如果没有看到您正在讨论的转储,它可能是一个用户定义的函数?请参阅此线程( http://lists.mysql.com/internals/33707 ),了解一些陷阱以及如何做到这一点。
https://stackoverflow.com/questions/6102744
复制相似问题