15

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

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

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

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

4

2 回答 2

21

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

于 2009-07-31T09:15:02.267 回答
8

使用BINARY (64) 类型?

于 2009-07-31T09:13:37.823 回答