MySQL Status Innodb_data_pending_reads 数据库状态作用意思及如何正确

本站中文解释

InnoDB 数据等待读数量(Innodb_data_pending_reads) 是MySQL状态变量,用来反映当前有多少正在等待I/O设备处理的数据页。如果值很高,表明服务器处理I/O操作的方式不合理,应当调整查询语句优化查询。

Innodb_data_pending_reads 展示了InnoDB存储引擎异步I/O完成前,该引擎共有多少在I/O设备等待处理的数据页。结果值通常为0,表示被请求的数据页已经被读入内存。如果此值变高,就表明InnoDB存储引擎正在同时处理大量的I/O操作,这么多I/O操作写入、写出表示文件可能存在紊乱,在此情况下代码会虚拟的延迟,影响MySQL的访问性能,所以要避免这种情况出现,你可以调节 innodb_io_capacity。

通过 SHOW TABLE STATUS in InnoDB 表中查看 innodb_data_pending_reads:

SELECT * FROM information_schema.tables WHERE table_schema=’test’ AND engine=’innodb’

另外,要解决 innodb_data_pending_reads 这个问题,可以查看innodb_io_capacity参数的值,可以根据I/O设备的负载来调节它的值,最大的值可以设置为 200,如果要调小值,可以直接设置问题的系统负载,说白了就是设置成比系统负载小一点,在表面这个值也就代表了 innodb_io_capacity这个参数对I/O设备上负荷的限制,如果I/O量超过了此限制,则设置阻止了超过此上限的I/O请求。最后,执行以下语句就可以更改innodb_io_capacity参数的值,比如下面语句设置innodb_io_capacity参数的值为100:

SET GLOBAL innodb_io_capacity = 100;

因此,当我们发现MySQL服务器的innodb_data_pending_reads的值很高的时候,我们可以根据I/O设备的负载来设置innodb_io_capacity参数的值,来从而减少io操作,优化MySQL服务器的I/O状态。


数据运维技术 » MySQL Status Innodb_data_pending_reads 数据库状态作用意思及如何正确