【问题标题】:which datatype, size and collation should use to store hash SHA-512 64-bit words into MYSQL database应该使用哪种数据类型、大小和排序规则将哈希 SHA-512 64 位字存储到 MYSQL 数据库中
【发布时间】:2013-05-08 09:18:39
【问题描述】:
我正在编写一个简单的工具来检查重复文件(即具有相同数据的文件)。我使用 sha-512 算法为每个文件生成哈希值。我正在使用 MYSQL 数据库来存储哈希值。
我的问题是 - 我应该使用什么数据类型、大小和排序规则在我的数据库中存储 sha_512 哈希?文件哈希 (sha-512) 将成为表的主键。我应该使用二进制数据类型(如 BLOB、VARBINARY(64) 和 BINARY)还是 VARCHAR(128)?
为了获得最佳性能还需要注意哪些其他事项?
【问题讨论】:
标签:
mysql
blob
collation
varchar
sha512
【解决方案1】:
您需要使用BINARY(64),因为哈希的长度正好是 64 字节,因此您不想使用可变长度类型。您也不想使用任何字符数据类型,因为散列本质上是二进制的。没有字符,您就没有任何排序规则。
固定长度以及没有字符编码和排序规则允许进行某些优化。如果仍然太慢,请尝试一些通用的 MySQL 优化,或者如果这也无济于事,请使用更小的主键大小。