我们使用 apt-get 命令在 Debian Squeeze OS 上安装了 Jeremy Zawodny 版本 2009-04-06 的 Perl mytop,MySQLd 版本为 5.1.53。我重做“apt-get install mytop”,表明没有更新版本的 mytop 可用。
这个版本的 mytop 似乎已经过时了,因为它系统地给出了 MySQLd 完成的查询的非常低的价值。事实上,它使用状态查询来获取自正常运行以来的总查询:
SHOW STATUS LIKE 'Questions';
它在新版本 mysqld 中产生错误结果。实际上,为了获得自正常运行以来的 mysql 查询总数,新的 mysqld 服务器将查询数转移到“查询”而不是“问题”:
SHOW STATUS LIKE 'Queries';
您可以通过以下方式看到两个变量之间的巨大差异:
mysql> SHOW STATUS LIKE 'Que%';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| Queries | 135903 |
| Questions | 160 |
+---------------+--------+
2 rows in set (0.00 sec)
这给出了“查询”和“问题”的两个值。
mytop -uJohnDoe2 -ppassword
这是原始的 mytop 输出:
MySQL on localhost (5.1.63-0+squeeze1-log) up 0+01:42:35 [13:36:44]
Queries: 265.0 qps: 0 Slow: 0.0 Se/In/Up/De(%): 14760/00/00/00
qps now: 0 Slow qps: 0.0 Threads: 5 ( 1/ 5) 1500/00/00/00
Key Efficiency: 100.0% Bps in/out: 0.9/173.8 Now in/out: 8.3/ 1.5k
Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- --------------
28019 root localhost 0 Query show full processlist
....
我将 mytop 复制到 mytop.pl,并在源 Perl 代码中将字符串“Questions”替换为“Queries”,然后运行
mytop.pl -uJohnDoe2 -ppassword
修改后的 mytop.pl 给出了更真实的监控:
MySQL on localhost (5.1.63-0+squeeze1-log) up 0+01:42:23 [13:36:32]
Queries: 136.1k qps: 23 Slow: 0.0 Se/In/Up/De(%): 28/00/00/00
qps now: 18 Slow qps: 0.0 Threads: 5 ( 1/ 5) 27/00/00/00
Key Efficiency: 100.0% Bps in/out: 0.1/ 18.3 Now in/out: 8.4/ 1.5k
Id User Host/IP DB Time Cmd Query or State
-- ---- ------- -- ---- --- --------------
30789 root localhost 0 Query show full processlist
....
您是否在系统中观察到此问题?即 MySQL 的 Perl 监视器现在在 MySQLd 5.1.63 之后的查询/问题方面无效?
添加:
在阅读了 Shlomi Noach 的回答后,我为修改后的 Perl 脚本文件添加了这个链接: mytop.pl。