Innodb 统计信息

Innodb 统计信息

我们以 MySQL 引擎运行InnoDB并使用 phpMyadmin 来管理数据库。在Status→ 下Query statistics,phpMyadmin 为我们提供以下内容:

phpMyAdmin 截图

我们想知道这些数字来自哪里,因为我们想创建一个Munin图表来显示这些统计数据随时间的演变情况。

当我们运行SHOW STATUS;查询时,我们得到的结果如下:

Innodb_rows_deleted 247555
Innodb_rows_inserted    822911
Innodb_rows_read    694934413
Innodb_rows_updated 15048

正如您所见,尽管两次测试的时间几乎相同,但存在很大差异。

问:您知道phpMyadmin它的价值来自哪里吗?

答案1

请注意 MySQL 文档显示状态

从这些数字来看,phpmyadmin 一定正在使用,SHOW GLOBAL STATUS;因为它会显示 MySQL 启动时以来的统计数据。

当您使用时SHOW STATUS;,它会返回会话级统计信息,当 DB 连接终止时,该统计信息就会出现问题。

答案2

如上所述RolandoMySQLDBA,首先要记住的是SHOW GLOBAL STATUS和之间的区别SHOW STATUS查看文档)显示的值phpMyadmin均来自Com_*变量源代码证实:

服务器状态.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报告的值相匹配)。

答案3

最好的数据是通过询问 MySQL 本身来获取的。与尝试与 phpMyAdmin 交互相比,实现起来也容易得多。phpMyAdmin 如何获取其数字是任何人的猜测,但我不会相信他们。

相关内容