【发布时间】:2011-02-14 19:36:45
【问题描述】:
我有一个安装了 LAMP 的繁忙网络服务器,我想知道,有没有办法计算服务器中每秒执行的查询数 (mysql) 数?
谢谢。
【问题讨论】:
标签: mysql performance lamp metrics
我有一个安装了 LAMP 的繁忙网络服务器,我想知道,有没有办法计算服务器中每秒执行的查询数 (mysql) 数?
谢谢。
【问题讨论】:
标签: mysql performance lamp metrics
你可以使用:
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。
【讨论】:
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';
【讨论】:
当您使用“STATUS”命令(而不是 SHOW STATUS)时,MySQL 将为您计算自服务器启动以来每秒的查询次数。
用 MySQL 5.1.63 测试。
【讨论】:
我们可以为此编写一个小脚本。如下所示。
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"
【讨论】:
可以从 SHOW GLOBAL STATUS 中挖掘有用的信息;命令,包括执行的查询数(如果您的 MySQL 是 5.0.76 或更高版本)。
见http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html
【讨论】:
Questions 和 Queries 之间的差异可能涉及存储例程。
试试 Jeremy Zawodny 的出色实用工具 mytop。
如果您安装了 Perl 模块 Time::HiRes,mytop 将自动使用它来生成每秒高分辨率查询信息。
【讨论】: