相同的MySQL数据库导入显示不同数量的记录

10 浏览
0 Comments

相同的MySQL数据库导入显示不同数量的记录

清空整个数据库后,同一个数据库被导入了三次,令人惊讶的是,每次显示的记录数都不同。为什么会这样?

第一次导入:

enter image description here

第二次导入:

enter image description here

第三次导入:

enter image description here

不能仅凭图片中显示的记录数来进行判断,因为它显示的是近似值,有错误的可能。那么问题是,我们如何确保数据库是正确的,没有遗漏记录?注意:快捷方式不可行,不能对每个表进行计数,这会花费很多时间。

0
0 Comments

原因:在导入MySQL数据库时,出现了显示不同记录数的问题。

解决方法:使用以下代码来获取实际记录数:

SELECT count(*) FROM 'table_name';

如果想要确保每个表都可以执行此查询,是否有任何快捷方式?

0
0 Comments

问题原因:使用工具如phpmyadmin/adminer时,它们通常从INFORMATION_SCHEMA中获取行数。对于InnoDB存储引擎,行数是一个粗略的估计值,它不是准确的值。phpmyadmin所选取的table_rows对于InnoDB来说是不准确的。

解决方法:为了获得准确的值,我们可以使用以下查询语句:

SELECT count(*) FROM 'table_name';

参考链接:http://dev.mysql.com/doc/refman/5.7/en/tables-table.html

感谢,我可以通过执行这个查询来确保每个表是否存在。有没有任何快捷方式?

0
0 Comments

问题:同一个MySQL数据库导入,显示不同数量的记录。

原因:MySQL在处理数字方面非常糟糕。对于InnoDB表,它经常是对包含的行数进行估计,而这些估计可能相差很大。它计算你看到的数字的方式是通过将表数据的总大小除以平均每行的字节数来完成的。这通常是对数据的一个足够好的近似,但是它可能非常具有误导性,误差可高达100倍。

解决方法:唯一确定的方法是执行COUNT(*),这可能需要在一个非常活跃的表上计算一些时间。

有人问是否有快捷方式,回答是没有。在一个闲置的服务器上,这通常只需要毫秒级的时间来计算每个表。在一个写入活动非常频繁的服务器上,可能需要几分钟的时间,这真的取决于具体情况。可以尝试一下,看看性能如何。这些数字是快速粗略的,通常生成它们的时间不会太长。

有人反馈在每个表上执行这个查询很耗时,回答是取决于计算机硬件和InnoDB调优参数。如果InnoDB引擎内存不足,性能可能不太好。手册中有一个专门介绍InnoDB参数的大节,以及许多网络上的指南。这些表都有一个PRIMARY KEY吗?

最后总结,为了确保每个表,必须对每个表执行查询。感谢。

0