首页/数据/SQL 速查/Handler 与 InnoDB 行计数解读
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

Handler 与 InnoDB 行计数解读

Handler_read_rnd_next、Innodb_rows_read 等计数从扫描行为侧面验证 EXPLAIN 的结论,用增量对比才有意义。

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

示例

示例
SHOW GLOBAL STATUS
WHERE Variable_name IN ('Handler_read_first','Handler_read_key',
  'Handler_read_next','Handler_read_rnd_next','Innodb_rows_read','Queries');

-- 压测或跑批前后各取一次快照,用差值判断扫描量
Handler_read_key按索引键定位的读取次数
Handler_read_next按索引顺序读取下一行(范围/索引扫描)
Handler_read_rnd_next全表顺序读取下一行的次数;持续增长提示表扫描
Innodb_rows_readInnoDB 读取行数总量
这些是自启动累计值:判断“当前是否在扫表”应取两次快照做差,而不是看绝对值。

易错点

  • 用累计值直接下结论:高计数可能来自很久之前的一次批量任务,必须用间隔增量判断
  • 把 Handler_read_rnd_next 当作磁盘读:它只统计行读取动作,是否命中缓冲池要看 InnoDB 计数

数据来源与参考

  • MySQL 8.0 Reference Manual §5.1.10 Server Status Variables
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌