Php 在mysql中存储gzip字符串

Php 在mysql中存储gzip字符串,php,mysql,gzip,Php,Mysql,Gzip,我指的是这个 我想在数据库中存储序列化会话(它们实际上存储在memcached池中,但我将其作为故障保护)。我正在从php压缩/解压。 我想问以下问题: 1) 这是一个好的举动吗?我这样做是为了避免使用mediumtext,因为数据可能大于text。我想/希望我将在那里存储大量会话。在这种情况下,gzip值得吗?这张桌子是MyISAM 2) 是否需要将表字段的编码设置为二进制?或者只有当我有一个完整的gzip文件时才这样做 3) 序列化是一个错误的移动,我应该使用json\u encode来代替

我指的是这个

我想在数据库中存储序列化会话(它们实际上存储在memcached池中,但我将其作为故障保护)。我正在从php压缩/解压。 我想问以下问题:

1) 这是一个好的举动吗?我这样做是为了避免使用
mediumtext
,因为数据可能大于
text
。我想/希望我将在那里存储大量会话。在这种情况下,gzip值得吗?这张桌子是MyISAM

2) 是否需要将表字段的编码设置为二进制?或者只有当我有一个完整的gzip文件时才这样做

3) 序列化是一个错误的移动,我应该使用
json\u encode
来代替吗(因为我猜是较小的大小)


谢谢,

您应该使用MEDIUMBLOB字段而不是MEDIUMTEXT。Blob没有编码,因为它们是原始字节流。

请注意:即使您将一些完全适合文本的数据存储在MEDIUMTEXT中,存储空间的差异也只是额外的一个字节,因为MEDIUMTEXT需要L+3字节,而文本需要L+2字节。有关更多信息,请参阅。您的平均会话有多大?如果只有“几个”字节,则在节省存储方面不会获得太多收益,但在(相对)无用的压缩开销方面会损失相当一部分。@Mark B,序列化良好,它很容易超过text/blob限制