Postgres内置的PGLZ压缩与GZIP相比如何?

3

从阅读一些TOAST相关的内容中,我了解到Postgres使用一种称为PGLZ的LZ系列压缩算法。当值大于2KB时,它会自动启动。

在速度和压缩比方面,PGLZ与GZIP相比如何?

我想知道PGLZ和GZIP是否具有类似的速度和压缩率,以至于在将大型JSON字符串作为数据插入到Postgres之前进行额外的GZIP步骤是不必要或有害的。


如何在多个相似的值之间应用压缩?比如说,“温度”列,它在中间值附近波动几度? - Dan Dascalescu
2个回答

4
它的速度明显更快,但压缩比低于gzip。它针对较低的CPU成本进行了优化。
在将大数据gzip压缩存储到bytea字段之前,确实有一个位置,假设您不需要直接在DB中操作它,或者不介意首先使用函数对其进行解压缩。如果必须在DB中执行此操作,则可以使用plpython或plperl等工具来执行此操作,但通常最好只在应用程序中执行此操作。
如果要进行额外的压缩,请考虑使用更强的压缩方法,如LZMA。
已经有努力将gzip和/或LZMA压缩添加到PostgreSQL中的TOAST中。这样做的主要问题是我们需要保持与旧版本的磁盘格式的兼容性,确保它在未来保持兼容性等。到目前为止,没有人提出了一个令相关核心团队成员满意的实现。例如,请参见可插拔的压缩支持。它往往会陷入一个进退两难的境地,在拔插式支持被拒绝的同时(请参见该线程以了解原因),又无法就适合的、软件专利安全的算法达成一致,决定采用作为新默认方法,同意如何更改格式以处理多种压缩方法等。

1
谢谢你,Craig!你认为在什么时候考虑额外压缩开始变得值得呢?我的情况涉及到可能有数百万个每个大小为10-100K的JSON blob。 - Ian Storm Taylor
2
很难说,是时候实验了!这取决于太多本地/应用程序特定因素,例如您查找它们的频率,更新它们的频率,空间限制是什么等等。 - Craig Ringer

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接