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