如果我有一个包含3000万行的表,并且表中的一列当前是text
列。该列填充有大小在2到10 kb之间的随机字符串。我不需要直接搜索字符串。
我考虑在保存字符串之前解压缩字符串(通常将字符串缩小2倍),而是将它们保存在bytea
列中。
我已经读过Postgresql默认会对text
列进行一些压缩,所以我想知道:作为建议更改的产品,是否会有任何实际的磁盘空间减少?
我正在运行Postgresql 9.3
答案 0 :(得分:2)
PostgreSQL在{em> TOAST表中存储超过约2000个字节的text
列并压缩数据。
压缩速度很快,但不是很好,因此如果使用不同的压缩方法,可以节省一些费用。由于存储的值不是很大,节省的费用可能很小。
如果你想这样,你应该在已经压缩的列上禁用压缩:
ALTER TABLE tab
ALTER bin_col SET STORAGE EXTERNAL;
我建议您使用PostgreSQL的标准压缩并保持简单,但最好的办法是运行测试,看看您是否从使用自定义压缩中获益。