在将GZIP文本数据插入数据库之前,更大的应用程序和数据库是否常见?
我猜在实际文本字段上的任何全文搜索在再次解压缩之前都不会有效吗?
答案 0 :(得分:5)
如果您在MySQL中使用InnoDB表类型和更新版本之一,则可以启用compression on an InnoDB表本身。
它在低级别管理,因此不会更改您的查询或任何内容。从我所读到的,压缩的轻微开销通过减少磁盘IO并允许更多数据存储在内存中的缓冲池中来抵消。但你确实提到了InnoDB不支持的全文搜索,所以这可能不是一个选择。
MySQL中还有一个Archive表类型,但除了我认为的主键之外,你失去了索引功能。
另一种选择是“打包”一个MyISAM表,但我相信这会使表只读,并且不会像其他选项一样压缩。
答案 1 :(得分:2)
我没有看到这么做,因为它基本上阻止了对MySQL端数据的任何操作:
like
,没有=
,没有其他操纵...... 尽管如此,如果您仅使用数据库存储该数据,而不是操纵它,那么它可能会很有趣。
注意:您可能需要执行一些基准测试,以衡量性能影响,因为压缩/解压缩需要CPU!
在那之后,问题是:你会处理客户端(PHP)方面或服务器(MySQL)方面的压缩吗?
在第二种情况下,MySQL提供了一个COMPRESS()
函数,您可能感兴趣。
答案 2 :(得分:0)
糟糕的主意。当磁盘空间小于1 GB时,额外的处理以节省一些空间不会抵消额外的编程时间(不仅仅是最初,请记住维护)。
由于需要对数据进行解压缩/压缩,这可能会使数据库访问速度变慢。索引无法在压缩数据上正常运行,因为您需要执行表扫描,解压缩数据,然后进行比较。全文搜索也在外面。
如果必须这样做,请不要使用gzip。使用内置的COMPRESS函数。