我在 php 中序列化了很多要使用 mysql 存储在数据库中的数组。
最终字符串的长度可以在 2000 到 100,000+ 之间变化很大,我想知道最好的列类型是什么?
我目前将它设置为 LONGTEXT
但我觉得这有点过头了!数据库已经处于事件状态,大约有 300 万行,这是一个即将添加的新列。
谢谢
最佳答案
始终使用任何 BLOB
data-type用于序列化数据,以便它不会被切断并以二进制安全的方式破坏序列化。如果最终字符串的长度没有最大值,那么您将需要 LONGBLOB
。如果您知道数据不会填满 2^24 个字符,您可以使用 MEDIUMBLOB
。 MEDIUMBLOB
大约为 16MB,而 LONGBLOB
大约为 4GB,所以我会说您使用 MEDIUMBLOB
非常安全。
为什么是二进制数据类型? MySQL 中的文本数据类型具有编码。字符编码将影响序列化数据在不同编码之间的转换方式。例如。当存储为 Latin-1 但随后读出为 UTF-8 时(例如,由于数据库驱动程序连接编码设置),序列化数据可能会被破坏,因为二进制偏移确实发生了变化,但序列化数据并未针对此类变化进行编码。 PHP 的序列化字符串是二进制数据,没有任何特定的编码。
关于php - 序列化(数据)的哪个mysql列类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770974/