0

我将serialized数据存储在 mysql 中,但不确定选择哪种字段类型?

下面是序列化数据输出的一个示例,

string(393) "a:3:{s:4:"name";s:22:"PACMAN-Appstap.net.rar";s:8:"trackers";a:6:{i:0;s:30:"http://tracker.ccc.de/announce";i:1;s:42:"http://tracker.openbittorrent.com/announce";i:2;s:36:"http://tracker.publicbt.com/announce";i:3;s:23:"udp://tracker.ccc.se:80";i:4;s:35:"udp://tracker.openbittorrent.com:80";i:5;s:29:"udp://tracker.publicbt.com:80";}s:5:"files";a:1:{s:22:"PACMAN-Appstap.net.rar";i:4147632;}}"

数据的字符串长度变化很大,最多可达 20,000 个字符。

我知道我不想使用TEXT数据类型,因为这可能会因为必须使用的字符集而损坏数据。

VARBINARY在使用,等时BLOB,我被卡住了。MEDIUMBLOB

让我们说如果我使用VARBINARY(20000)这是否意味着我可以20000安全地插入一个长度为的字符串,如果它结束了则丢弃插入?

4

1 回答 1

0

我同意 PLB,因为您应该使用BLOB. length 属性指定在此列中可以保存多少字节。BLOB和之间的主要区别VARBINARYVARBINARY用填充填充未使用的空间,而BLOB只有数据的实际长度被保留给一个字段。
但正如 PLB 所说,只有在绝对必要时才使用它,因为在大多数情况下它会减慢整个数据库的速度。更好的解决方案是将文件存储在服务器的文件系统中,并将文件的路径保存在数据库中。

于 2012-05-27T14:59:03.637 回答