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

Ian*_*lor 3 compression postgresql gzip

通过阅读有关TOAST的一些内容,我了解到 Postgres 使用 LZ 系列压缩算法,称为 PGLZ。对于大于 2KB 的值,它会自动启动。

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

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

Cra*_*ger 5

它的速度明显更快,但压缩率比 gzip 低。它针对降低 CPU 成本进行了优化。

假设您不需要直接在数据库中操作它,或者不介意必须先使用函数来解压缩它,那么在将大数据存储在 bytea 字段之前,肯定有一个地方可以对其进行 gzip 压缩。如果您必须在数据库中执行此操作,则可以使用 plpython 或 plperl 之类的工具来执行此操作,但通常在应用程序中执行此操作更方便。

如果您打算进行额外的压缩,请考虑使用更强的压缩方法,例如 LZMA。


人们一直在努力向 PostgreSQL 中的 TOAST 添加对 gzip 和/或 LZMA 压缩的支持。这样做的主要问题是我们需要保持与旧版本的磁盘格式的兼容性,确保它与未来保持兼容,等等。到目前为止,没有人提出一个令相关核心团队成员满意的实现。请参见例如可插拔压缩支持。它往往会陷入第 22 条军规,其中可插拔支持被拒绝(请参阅该线程了解原因),但没有人能就合适的、软件专利安全的算法达成一致,我们应该采用它作为新的默认方法,就如何更改达成一致处理多种压缩方法的格式等。

  • 很难说,是时候尝试一下了!这取决于太多本地/应用程序特定因素,例如您查找它们的频率、更新它们的频率、您的空间限制等等 (2认同)