当前位置: 首页 > 面试题库 >

与INT相比,BIGINT mysql的性能

尤博达
2023-03-14
问题内容

我试图找出如果将主键更改为BIGINT(20)时表的性能是否会下降。目前,我正在使用INT(7),并且已经有大约
300.000个条目具有大ID(7或8位数字) 。我已经搜索了很多东西,但只发现它使用了更多的磁盘空间(这很明显)。

我所有的ID现在都有7位数字,但是我的客户希望更改为8位数字。将来我将无法轻松更改软件,因此我考虑现在使用BIGINT(20)以防万一。即使我不需要使用BIGINT也会降低性能吗?

有经验的人对速度和性能有建议吗?


问题答案:

要回答您的问题:是的,它的性能会降低。显然,类型越大,表越大,查询就越慢(I /
O越多,索引越大,访问时间越长,结果适合各种缓存的可能性越小等等)。因此,根据经验:始终使用适合您所需的 最小类型

话虽如此, 性能并不重要
。为什么?因为当到达溢出INT的地步时,BIGINT是唯一的解决方案,您将不得不接受它。同样在这一点上(考虑到您正在使用自动增量PK,您将超过40
亿 行),您将遇到更大的性能问题,并且与INT相比,BIGINT的开销将是您所关注的最少。

因此,请考虑以下几点:

  • 如果不需要负值,请使用UNSIGNED,这将使限制加倍。
  • UNSIGNED INT最大值是4.294.967.295。如果您使用的是自动递增PK,而 您只有300.000个条目,那么您真的不必担心 。您现在甚至可以使用MEDIUMINT,除非您打算真正快速地增长。(请参阅http://dev.mysql.com/doc/refman/5.1/en/integer-types.html
  • 类型后面括号中的数字 不会影响 类型 的最大值 。INT(7)与INT(8)或INT(32)相同。如果您指定ZEROFILL,则用于指示显示宽度(请参见http://dev.mysql.com/doc/refman/5.1/en/numeric-type-overview.html)


 类似资料:
  • 以及为什么我在这个中得到..

  • 更新:为了更明显地说明我正在努力做的事情:我将拥有5000万以上的设备流媒体音频。流平均为100KB,峰值流量时为200K流/分钟。我正在寻找一种存储解决方案来满足这种需求。我一直在研究Bookkeeper、Kafka、Ignite、Cassandra和Redis。到目前为止,我只对redis和ignite进行了基准测试,但我很惊讶ignite这么慢。

  • 问题内容: 公认的是,在int列上搜索表的速度比在字符串列上搜索表的速度快(例如varchar)。 但是,如果我的衬衫表带有“颜色”列,那么创建一个颜色表时,该表上的主键是衬衫表上的外键会更好吗?搜索绿色的衬衫时,该联接是否会抵消在衬衫的“颜色”列中的值为int而不是诸如“绿色”之类的字符串值的性能优势? 问题答案: 与正在执行的其他操作相比,这两种方法之间不太可能有很大的性能差异。如果只有少数几

  • 我正在进行从ActiveMQ“Classic”5.15.4到ActiveMQ Artemis 2.17.0的迁移,发现性能下降。我和一个制作人就一个主题进行了测试,并有不同数量的消费者使用该主题。我在测量信息创建和消费者接收之间的时间。 测试在一个由3个节点组成的集群上进行,所有节点都相互连接。每个代理都嵌入到一个JBoss中。我使用了一个由3个节点组成的集群,因为这是我们当前的生产设置。我挑战这

  • 我正在运行一个查询,使用聚合打印大约300个结果。 在Robo3t/Mongo shell中执行查询非常快,但在NodeJS中使用mongoose执行查询时非常慢。 尝试寻找答案,登陆到这个链接,尝试设置,但是两个查询的差异仍然是7-8秒

  • JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0"