mysql中的VARBINARY和BLOB用于通过PHP进行序列化数据?

时间:2012-05-27 14:30:44

标签: php mysql database-design

我将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数据类型,因为它可能会因为必须使用的字符集而损坏数据。

我在使用VARBINARYBLOBMEDIUMBLOB等时遇到困难。

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

1 个答案:

答案 0 :(得分:0)

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