相同的MySQL数据库导入显示不同数量的记录
问题:同一个MySQL数据库导入,显示不同数量的记录。
原因:MySQL在处理数字方面非常糟糕。对于InnoDB表,它经常是对包含的行数进行估计,而这些估计可能相差很大。它计算你看到的数字的方式是通过将表数据的总大小除以平均每行的字节数来完成的。这通常是对数据的一个足够好的近似,但是它可能非常具有误导性,误差可高达100倍。
解决方法:唯一确定的方法是执行COUNT(*)
,这可能需要在一个非常活跃的表上计算一些时间。
有人问是否有快捷方式,回答是没有。在一个闲置的服务器上,这通常只需要毫秒级的时间来计算每个表。在一个写入活动非常频繁的服务器上,可能需要几分钟的时间,这真的取决于具体情况。可以尝试一下,看看性能如何。这些数字是快速粗略的,通常生成它们的时间不会太长。
有人反馈在每个表上执行这个查询很耗时,回答是取决于计算机硬件和InnoDB调优参数。如果InnoDB引擎内存不足,性能可能不太好。手册中有一个专门介绍InnoDB参数的大节,以及许多网络上的指南。这些表都有一个PRIMARY KEY
吗?
最后总结,为了确保每个表,必须对每个表执行查询。感谢。