我们将InnoDB作为MySQL引擎运行,并使用phpMyadmin来pipe理我们的数据库。 在Status → Query statistics ,phpMyadmin给了我们以下信息:

我们想知道这些数据来自哪里,因为我们想创build一个显示这些统计数据随着时间的推移而发展的Munin图。
当我们运行SHOW STATUS; 这里查询是我们得到的:
Innodb_rows_deleted 247555 Innodb_rows_inserted 822911 Innodb_rows_read 694934413 Innodb_rows_updated 15048
正如你所看到的,虽然两者几乎同时进行,但是还是有很大差异的。
问:你知道phpMyadmin从哪里得到它的价值吗?
请注意在SHOW STATUS上的MySQL文档
看数字,phpmyadmin必须使用SHOW GLOBAL STATUS; 因为它提供了MySQL启动时的统计信息。
当你使用SHOW STATUS; ,这会导致会话级别的统计数据在数据库连接终止时变为wawy。
最好的数据是通过询问MySQL本身获得的。 试图与phpMyAdmin进行交互也很容易。 如何phpMyAdmin得到它的数字是任何人的猜测,但我不会相信他们。
正如RolandoMySQLDBA提到的,首先要记住的是SHOW GLOBAL STATUS和SHOW STATUS的区别( 参见文档 )。 关于由phpMyadmin显示的值,它们从源代码确认的Com_*variables中获得:
server_status.php
$sql = "SELECT concat('Com_', variable_name), variable_value FROM data_dictionary.GLOBAL_STATEMENTS [...] // For the percentage column, use Questions - Connections, because // the number of connections is not an item of the Query types // but is included in Questions. Then the total of the percentages is 100. $name = str_replace(array('Com_', '_'), array('', ' '), $name);
经过比较,看来phpMyAdmin显示正确的值(即匹配MySQL正在报告)。