我将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
长度的字符串,如果它已经结束然后丢弃插入?
答案 0 :(得分:0)
我同意PLB的意见,你应该使用BLOB
。 length属性指定可以在此列中保存的字节数。 BLOB
和VARBINARY
之间的主要区别在于VARBINARY
使用填充填充未使用的空间,而BLOB
仅为一个字段保留数据的实际长度。<登记/>
但正如PLB所说,只有在绝对必要时才使用它,因为在大多数情况下它会减慢整个数据库的速度。更好的解决方案是将文件存储在服务器的文件系统中,并将文件的路径保存在数据库中。