本文适用于 MySQL服务器-版本5.7及更高版本
逻辑I/O比物理I/O快很多倍。因此,DBA应该努力将物理I/O保持在最低水平。
当数据被很好地缓存时,总的系统吞吐量是未被很好地缓存时的许多倍,这并不罕见,对于具有高负载或严格的服务质量目标的系统来说,出色的缓存命中率是非常需要的。
InnoDB缓冲区缓存的命中率
公式:100 * (1 - (innodb_buffer_pool_reads/innodb_buffer_pool_read_requests ))
注意: 对于具有大型缓冲池的系统,既要关注该比率,也要关注OS页面读写速率的变化可以更好地跟踪差异。
我们如何找出哪些InnoDB表缓存在innodb buffer pool中呢?
使用sys模式可以发现缓冲池(sys模式)中缓存了多少页的表(从MySQL Server 5.7开始,它是默认安装的)。要使用的查询是:SELECT * FROM sys.innodb_buffer_stats_by_table;