51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

数据量统计 mysql information_schema.TABLES表中的table_rows 字段值与count(*) 值不同

mysql information_schema.TABLES表中的table_rows 字段值与count(*) 值不同

数据库的数据量怎么统计 (知乎): 连接

mysql获取数据库表数量和数据库表行数以及表数据量大小 - 寻梦99 - 博客园 (cnblogs.com)

 SELECT table_name,table_rows FROM information_schema.tables WHERE TABLE_SCHEMA = 'chat_proxy' ORDER BY table_rows DESC;

select count(*) from chat_info;

执行得到的值是不相同的!那是因为:

(1)默认情况下 mysql 对表进行增删操作时,是不会自动更新 information_schema 库中 tables 表的 table_rows 字段的,在网上搜索一下发现说:只有10%的行数发生变化才会自动收集(没有亲自验证过!);

(2)执行 Analyze table tableName; 会统计所有表数据(在生产环境中不建议使用,因为会锁表!);

对于MyISAM才是正确的统计数据,但是对于InnoDB引擎的,可能与实际值相差 40% 到 50%,所以只是一个大概的统计

所以针对这种情况,要更改存储引擎,肯定是不太合适,因为InnoDB是默认的存储引擎,能支持事务外健,并发情况性能也比较好

赞(4)
未经允许不得转载:工具盒子 » 数据量统计 mysql information_schema.TABLES表中的table_rows 字段值与count(*) 值不同