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

在MySQL中存储非常大的整数

宇文鸿振
2023-03-14
问题内容

我需要在MySQL表中存储大量(数千万)的512位SHA-2哈希。为了节省空间,我想以二进制形式存储它们,而不是以十六进制数字的字符串存储。我使用的是ORM(DBix
:: Class
),因此将从代码中抽象出存储的特定详细信息,从而可以将它们扩充到我选择的任何对象或结构中。

MySQL的BIGINT类型是64位。因此,我可以从理论上将散列划分为八BIGINT列。不过,这似乎很荒谬。我的其他想法只是使用单个BLOB列,但是我听说由于MySQL将它们视为可变长度字段,因此它们的访问速度可能很慢。

如果有人可以提供一些方法来节省我几个小时对各种方法进行基准测试的时间,我将不胜感激。

注意:对任何说“只使用postgres!”的人,自动-1。 :)


问题答案:

您是否考虑过“
binary(64)”?参见MySQL二进制类型。



 类似资料:
  • 简而言之:如果您有大量不同大小的文档,其中相对较少的文档达到最大对象大小,那么在MongoDB中存储这些文档的最佳实践是什么? 我有一套文件,比如: 值列表的长度因文档而异。对于大多数文档,它将有几个元素,对于少数文档,它将有数千万个元素,我将达到MongoDB中的最大对象大小限制。问题是,我为那些非常大(而且相对较少)的文档提出的任何特殊解决方案都可能会对我存储小文档的方式产生影响,否则,这些小

  • 问题内容: 我有一些现在大于INT可以处理的数字。 这有点令人尴尬,但老实说我不确切知道BIGINT(8)的含义。8是最大位值还是最大长度? 那么BIGINT(1)只能是一位数字吗?还是BIGINT(1)还有其他东西?我认为tinyint(1)最大值为127,如何计算出来? 我能做的最大的事情是什么?我可以在mysql中存储为整数的最大数字是多少? 问题答案: 数字代表它的显示方式-不会影响数据的

  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,

  • 编辑:在评论中进行了一些讨论后,发现由于幸运地了解了浮点数是如何在C中实现的,我问了一些与我想问的不同的东西。 我想使用比更大的整数(对我来说是8个字节)(对我来说是8个字节),可能不会重复出现在数组或bigint库中。由于我的是16个字节,我认为只需切换类型就可以了。结果表明,即使可以表示更大的整数,你也不能在不失去精度的情况下进行操作——用这些更大的整数。所以不可能实现我想做的事情。实际上,正

  • 问题内容: 我在Innodb中有一个表格,其中有超过1亿行。 我必须知道外键= 1时是否有超过5000行。我不需要确切的数字。 我做了一些测试: => 16秒 => 16秒 => 0.6秒 我的网络和治疗时间会更长一些,但可能会超过15.4秒! 你有更好的主意吗? 谢谢 编辑:[添加了OP的相关评论] 我尝试从WHERE fk = 1表中选择SELECT SQL_NO_CACHE COUNT(fk

  • 问题内容: 抱歉,很长的帖子! 我有一个包含约30个表的数据库(InnoDB引擎)。这些表中只有两个表,即“ transaction”和“ shift”非常大(第一个表有150万行,而shift有23000行)。现在一切正常,我对当前的数据库大小没有任何问题。 但是,我们将有一个类似的数据库(相同的数据类型,设计等),但数据库更大,例如,“事务”表将具有约 10亿条记录 (每天约有 230 万笔交