无法信任 phpMyAdmin 中的行计数?
在 phpMyAdmin 中,您可能会遇到具有以下特征的表的估计行数存在显着差异:保持不变。这种令人费解的不一致现象可归因于底层数据库引擎对行计数的处理。
与维护准确行计数的 MyISAM 表不同,像您示例中的 InnoDB 表缺乏此功能。为了确定准确的行数,InnoDB 必须煞费苦心地扫描表中的每一行,这使得大型表的 SELECT COUNT(*) 查询的计算成本很高。
phpMyAdmin 使用 SHOW TABLE STATUS 查询来检索估计的行从 InnoDB 计数。然而,每次执行时,这个近似值都会有所不同,可能会导致与实际计数有很大偏差。
MySQL 手册承认这一限制:“对于 InnoDB 等存储引擎,该值 [来自 SHOW TABLE STATUS” ] 是一个近似值,可能与实际值相差 40 到 50%。”
对于精确的行计数,手册建议使用选择计数 (*)。此外,InnoDB 文档解释说,并发事务可能会导致同时“看到”不同的行计数,从而使内部行计数变得不切实际。
因此,虽然 SHOW TABLE STATUS 可以提供估计值,但它无法提供绝对值精确。为了获得准确一致的行计数,请考虑实现由应用程序维护的计数器表或利用 MySQL 查询缓存来优化性能。
以上是为什么 phpMyAdmin 显示 InnoDB 表的行数不一致?的详细内容。更多信息请关注PHP中文网其他相关文章!