Ben*_*nee 16 mysql precision timer command-line-interface
我正在完成一些优化工作,我注意到在一些mysql转储中人们发表文章和问题(现在我实际上找不到了),有高精度执行时间(0.05985215秒)而不是0.06秒).
如何在命令行上查看这些更精确的查询时间?
编辑
这样的例子是:
+----------+
| COUNT(*) |
+----------+
| 11596 |
+----------+
1 row in set (0.05894344 sec)
Run Code Online (Sandbox Code Playgroud)
使用分析使我成为那里的一部分,但产生的输出太长,我必须记住启用它.我只是在寻找一个简单的高精度持续时间.
SET profiling = 1;
<query>
SHOW PROFILES;
Run Code Online (Sandbox Code Playgroud)
给我这样的东西:
+----------------------+-----------+
| 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)
Run Code Online (Sandbox Code Playgroud)
Ben*_*nee 12
似乎最好的答案是启用分析.没有其他的线索可以解决.
最佳答案,使用查询分析.
SET profiling = 1;
<query>
SHOW PROFILES;
Run Code Online (Sandbox Code Playgroud)
ax.*_*ax. 10
通过查看mysql命令行客户端的来源,可以最好地回答这个问题.所述相关的代码段,
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);
}
Run Code Online (Sandbox Code Playgroud)
具有硬编码为(2)的秒值的小数点后的位数.这将使我得出结论,库存mysql安装无法实现更高的精度时间.
当然,您可以修补此代码,使其可配置等,并从源代码安装.我想这就是你提到的文章和问题中的人们正在做的事情.你最好的机会就是问问他们(看我对你问题的评论).
| 归档时间: |
|
| 查看次数: |
9170 次 |
| 最近记录: |