我试图找到由某些 MySQL 查询引起的瓶颈,这些查询经常导致 Web 服务器过载。然后我发现了这个有用的命令:
mysqladmin -u myusername -p -i 1 processlist
每秒都会打印一个包含 MySQL 中所有活动进程的表,包括重要信息,例如 SQL 查询和所花费的秒数,如下图所示:
在大多数情况下,这已被证明非常有用。但现在的问题出在客户身上,客户每小时遇到一次或两次这样的问题。那么这个解决方案就像大海捞针。
所以,我想要实现的是打印每一行,只要有 5 秒或以上的时间,整行都打印出来。
我唯一接近我需要的就是将 grep 添加到输出中,如下所示:
mysqladmin -u digitalasesores -p -i 1 processlist | grep '| 5 |'
但显然这不是我想要的,因为它只会在查询达到 5 秒时显示。是否可以按 5 以上的任意数字进行过滤?