MySQL如何统计每秒执行的查询次数,有什么方法?

11

我有一个安装了LAMP的繁忙Web服务器,我想知道是否有办法计算服务器每秒执行的查询次数(MySQL)?

谢谢。

6个回答

11
SELECT s1.variable_value / s2.variable_value
FROM information_schema.global_status s1, information_schema.global_status s2
WHERE s1.variable_name='queries'
AND s2.variable_name ='uptime';

对于使用mysql 5.7+的任何人来说,全局状态表已经移动到performance_schema。 - Matthew Conradie

8

尝试使用Jeremy Zawodny的优秀工具mytop

如果您安装了Perl模块Time::HiRes,mytop将自动使用它来生成高分辨率的每秒查询信息。


1
我还没有安装那个。我找到了其他的方法mysqladmin状态 - Nikos

5

这些查询中包含了哪些问题? - Uday
我正在寻找MySQL如何计算这些问题值或查询值的答案。我正在对COM_SELECT、COM_UPDATE、COM_SET_OPTION、COM_UPDATE、COM_DELETE等进行求和,但是在这两者之间没有得到精确匹配。 - Uday
2
“Questions”和“Queries”的区别可能涉及存储过程。 - Rick James

5
您可以使用:
 mysqladmin -u root -p  status

这将会返回如下输出:

Uptime: 17134  Threads: 2  Questions: 1245  Slow queries: 0  Opens: 49  Flush tables: 1  Open tables: 42  Queries per second avg: 0.072

这里的每秒查询数是:0.072,即questions/uptime


2
当您使用“STATUS”命令(而不是SHOW STATUS)时,MySQL将为您计算自服务器启动以来的每秒查询次数。
已在MySQL 5.1.63上进行测试。

0
我们可以为此编写一个小脚本。它会类似于以下内容。
    declare -i a
    declare -i b
    declare -i c
    a=`mysql -uroot -pxxxxx -e "show status like 'Queries'" | 
    tail -1 | awk '{print    $2}'`
    echo "$a"
    sleep 1
    b=`mysql -uroot -pxxxxx -e "show status like 'Queries'" | 
    tail -1 | awk '{print                 $2}'`
    echo "$b"
    c=$b-$a
    echo "Number of Queries per second is: $c"

这应该都可以在MySQL中完成,不是吗?可惜我不知道怎么做。 - Mike Gifford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接