解释 mysqldumpslow 结果

Interpreting mysqldumpslow results

我已修改 mysql 配置以记录慢速查询

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

并用 mysqldumpslow 解释它们。其中一个结果如下

Count: 28  Time=0.21s (5s)  Lock=0.00s (0s)  Rows=5.0 (140), root[root]@localhost

问题:括号里的数字是什么意思?

当 运行 使用 mysql(或通过 mysql GUI)时,查询确实需要大约 0.21 秒;然而,当向页面发出请求时,时间跨度更像是 5 秒。

补充阅读:mysqldumpslow: What does these fields indicate..?

括号里的数字(5s)好像是平均数Time乘以Count再取底

28 * 0.21 = 5.88s ~ 5s

同样适用于行

28 * 5.0 = 140 

括号内的值表示一组查询中发生的最大值,而括号前的值表示该组的平均值。你的情况:
您有一组查询被调用了 28 次,平均执行时间为 0.21 秒,但是(至少)一次需要 5 秒。跳过锁(工作方式相同),查询通常 returns 5 行,尽管一次返回 140 行