首页/数据/数据库速查/Buffer Pool 命中率与状态解读
性能与调优57 条

Buffer Pool 命中率与状态解读

用 Innodb_buffer_pool_read_requests 与 Innodb_buffer_pool_reads 算命中率;但更该盯的是物理读增长与 free/young/old 页分布。

数据库速查数据更新于 2026-10-12

命中率与页分布

命中率与页分布
SHOW STATUS LIKE 'Innodb_buffer_pool_read%';
-- 命中率 = 1 - reads / read_requests,一般 >99%
SELECT POOL_ID, FREE_BUFFERS, DATABASE_PAGES, PAGES_MADE_YOUNG, PAGES_NOT_MADE_YOUNG
FROM information_schema.INNODB_BUFFER_POOL_STATS;
读请求read_requests 逻辑读
物理读reads 越大越缺缓存
查看内容innodb_buffer_page / innodb_buffer_page_lru 可看热页
命中率是比例,10 万次物理读在 10 亿次逻辑读里也是 99.99%——要结合绝对值与磁盘 IO 监控判断。

易错点

  • 看到 99.9% 命中率就宣布没问题:绝对物理读可能是压垮磁盘的那根稻草
  • 把 PAGES_MADE_YOUNG 当实时值直接读,实际是周期性采样的累计量

数据来源与参考

  • MySQL 8.0 Reference Manual: InnoDB Buffer Pool Statistics

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌