gzipping + storage as bytea会将更多磁盘空间作为文本存储在存储上吗?

时间:2018-02-27 13:55:39

标签: postgresql gzip

如果我有一个包含3000万行的表,并且表中的一列当前是text列。该列填充有大小在2到10 kb之间的随机字符串。我不需要直接搜索字符串。

我考虑在保存字符串之前解压缩字符串(通常将字符串缩小2倍),而是将它们保存在bytea列中。

我已经读过Postgresql默认会对text列进行一些压缩,所以我想知道:作为建议更改的产品,是否会有任何实际的磁盘空间减少?

我正在运行Postgresql 9.3

1 个答案:

答案 0 :(得分:2)

PostgreSQL在{em> TOAST表中存储超过约2000个字节的text列并压缩数据。

压缩速度很快,但不是很好,因此如果使用不同的压缩方法,可以节省一些费用。由于存储的值不是很大,节省的费用可能很小。

如果你想这样,你应该在已经压缩的列上禁用压缩:

ALTER TABLE tab
   ALTER bin_col SET STORAGE EXTERNAL;

我建议您使用PostgreSQL的标准压缩并保持简单,但最好的办法是运行测试,看看您是否从使用自定义压缩中获益。