返回顶部
首页 > 资讯 > 数据库 >【mysql】navicat工具上显示到的表的行数和实际的行数不一致
  • 552
分享到

【mysql】navicat工具上显示到的表的行数和实际的行数不一致

mysql数据库sql 2023-09-27 10:09:38 552人浏览 泡泡鱼
摘要

目录 事件起因环境和工具原因解释参考内容结束语 事件起因 是这样的,今天在与三方系统进行对接,查看Mysql数据库时,我这边的有一个表的数据量应该是和三方系统里的数据量是一样的,但是我

目录

事件起因

是这样的,今天在与三方系统进行对接,查看Mysql数据库时,我这边的有一个表的数据量应该是和三方系统里的数据量是一样的,但是我给他提供的数量我当时是看的navicat提供的统计数量,如下图:
数据量差异
在线上的数据库里,数据差距更大,实际有12000多条,而这个工具统计到的数量只有11000多条,更是差距有上千条,差距更大了,说明这个统计肯定是有问题的。

环境和工具

mysql 5.7
navicat premium 12

原因解释

上面右边提示的行的数量其实并不是navicat工具生成的,要弄清楚一个东西,navicat只是一个可视化工具,数据都是来自于mysql数据库,mysql自己作为一个数据库,它自己有统计数量,下面的语句可以查询mysql对当前数据库所有表的一些信息统计(这个是mysql数据库本身的功能):

select * from infORMation_schema.TABLES;

找到查询出来的之前数据显示不对的表的table_rows这列,这个数量就是navicat上面显示的数量:
在这里插入图片描述
行的数量。一些存储引擎,比如 MyISAM,存储的是精确的计数。对于其他的存储引擎,比如 InnoDB,这个值是一个近似值,可能与实际值相差 40%-50%。 在这种情况下,使用 SELECT COUNT(*) 来获得一个准确的计数。

关于数据库引擎
查看当前数据库所支持的存储引擎命令:

show engines

我的mysql的查询结果:
存储引擎查询结果
Engine列表示引擎的名称,Support列表示是否支持这种引擎模式(列值DEFAULT表示默认的模式,YES表示支持这种模式,NO表示不支持),Transactions列表示是否支持事务(YES支持,NO不支持) 上图中只有InnoDB的存储引擎支持事务(这个涉及报错时的数据回滚,很重要)

默认存储引擎查询(并不建议改,改了后重启还是会被重置,InnoDB在后端的事务控制还挺重要的):

show variables like 'default_storage_engine%'

我的查询结果:
在这里插入图片描述
临时修改默认存储引擎的方法:

set default_storage_engine = < 存储引擎名 >

其实使用mysql的话,一般都是使用InnoDB作为存储引擎的,毕竟它的事务非常重要,在众多事件上都能运用得上,特别是涉及后端对数据库进行操作时的报错等问题时进行的事务回滚,保证数据的一致性 显得尤为重要

参考内容

数量不准的原因解释:https://blog.csdn.net/CSDN_WYL2016/article/details/122766885
另一篇:https://blog.csdn.net/x851288986/article/details/121677610

结束语

若是对你有所帮助的话,希望能获得你的 点赞、评论、收藏,这将是对我很大的鼓励!!! 这对我真的很重要!!!
蟹蟹٩(‘ω’)و

来源地址:https://blog.csdn.net/chirp_CQ/article/details/127093953

您可能感兴趣的文档:

--结束END--

本文标题: 【mysql】navicat工具上显示到的表的行数和实际的行数不一致

本文链接: https://lsjlt.com/news/419454.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作