Mysql 返回无效结果的缓冲池使用率百分比查询

Mysql 返回无效结果的缓冲池使用率百分比查询,mysql,buffer,information-schema,Mysql,Buffer,Information Schema,我试图计算数据库服务器上的缓冲池使用情况,但我过去使用的查询给出的结果不准确: mysql> SELECT CONCAT(FORMAT(DataPages*100.0/TotalPages,2),' %') BufferPoolDataPercentage FROM ( SELECT variable_value DataPages FROM information_schema.glob

我试图计算数据库服务器上的缓冲池使用情况,但我过去使用的查询给出的结果不准确:

mysql>     SELECT  CONCAT(FORMAT(DataPages*100.0/TotalPages,2),' %')
                            BufferPoolDataPercentage
    FROM ( SELECT  variable_value DataPages
            FROM  information_schema.global_status
            WHERE  variable_name = 'Innodb_buffer_pool_pages_data'
         ) A,
         ( SELECT  variable_value TotalPages
            FROM  information_schema.global_status
            WHERE  variable_name = 'Innodb_buffer_pool_pages_total'
         ) B;

+--------------------------+
| BufferPoolDataPercentage |
+--------------------------+
| 145.55 %                 |
+--------------------------+
1 row in set (0.01 sec)

有人能提供修复建议吗?

您使用的是什么版本

是否涉及
ROW\u FORMAT=COMPRESSED

变更日志说

-----2013-02-05 5.6.10通用性和2013-02-05 5.5.30——增加或更改的功能——InnoDB-----

使用压缩表时,计算中的内存使用量的计算非常复杂,因为压缩页可能小于16KB或用户指定的大小。虽然可以从表中检索此信息,但该操作成本很高。以下新状态变量有助于简化涉及缓冲池内存使用的计算:

[Innodb_buffer_pool_bytes_data](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_bytes_data), to supplement [Innodb_buffer_pool_pages_data](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_pages_data).

[Innodb_buffer_pool_bytes_dirty](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_bytes_dirty), to supplement [Innodb_buffer_pool_pages_dirty](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_pages_dirty).
(Bug#15842637)

-----2010-07-06 5.5.5开发人员里程碑——修复了bug——InnoDB------
-----2010-05-06 5.1.47——漏洞修复——InnoDB-----

information_schema.global_status表中innodb_buffer_pool_pages_total和innodb_buffer_pool_pages_misc的值可能计算不正确。(Bug#52983)

有可能您的两次
选择
并不是用相同的数据完成的。一开始可能更安全

SELECT  variable_value TotalPages
        FROM  information_schema.global_status
        WHERE  variable_name LIKE 'Innodb_buffer_pool_pages%'

我检查了150多台服务器,发现了您提到的另一个异常情况。

您使用的是什么版本

是否涉及
ROW\u FORMAT=COMPRESSED

变更日志说

-----2013-02-05 5.6.10通用性和2013-02-05 5.5.30——增加或更改的功能——InnoDB-----

使用压缩表时,计算中的内存使用量的计算非常复杂,因为压缩页可能小于16KB或用户指定的大小。虽然可以从表中检索此信息,但该操作成本很高。以下新状态变量有助于简化涉及缓冲池内存使用的计算:

[Innodb_buffer_pool_bytes_data](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_bytes_data), to supplement [Innodb_buffer_pool_pages_data](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_pages_data).

[Innodb_buffer_pool_bytes_dirty](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_bytes_dirty), to supplement [Innodb_buffer_pool_pages_dirty](http://dev.mysql.comhttps://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Innodb_buffer_pool_pages_dirty).
(Bug#15842637)

-----2010-07-06 5.5.5开发人员里程碑——修复了bug——InnoDB------
-----2010-05-06 5.1.47——漏洞修复——InnoDB-----

information_schema.global_status表中innodb_buffer_pool_pages_total和innodb_buffer_pool_pages_misc的值可能计算不正确。(Bug#52983)

有可能您的两次
选择
并不是用相同的数据完成的。一开始可能更安全

SELECT  variable_value TotalPages
        FROM  information_schema.global_status
        WHERE  variable_name LIKE 'Innodb_buffer_pool_pages%'

我检查了150多台服务器,发现了您提到的另一个异常情况。

您使用的MySQL版本是什么?我使用的是5.6.28版的MySQL(Percona)您使用的MySQL版本是什么?我使用的是5.6.28版的MySQL(Percona)我使用的是5.6.28版的MySQL(Percona)@user3299633-我怀疑这是否值得担心。你可以在bugs.mysql.com上提交一份bug报告。我使用的是mysql(Percona)@user3299633的5.6.28版——我怀疑这是否值得担心。您可以在bugs.mysql.com上提交bug报告