代码之家  ›  专栏  ›  技术社区  ›  Ian Storm Taylor

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

  •  3
  • Ian Storm Taylor  · 技术社区  · 7 年前

    从阅读一些关于 TOAST 我了解到Postgres使用了一种LZ族压缩算法,它称之为PGLZ。对于大于2KB的值,它会自动启动。

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

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

    2 回复  |  直到 7 年前
        1
  •  4
  •   Craig Ringer    7 年前

    它明显更快,但压缩比低于gzip。它经过优化以降低CPU成本。

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

    如果你想做额外的压缩,考虑使用像LZMA这样的更强的压缩方法。


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

        2
  •  0
  •   Massimo Fidanza    7 年前

    自定义压缩方法正在成为现实。如本文所述 https://www.postgresql.org/message-id/20180618173045.7f734aca%40wp.localdomain 综合测试表明,zlib提供了更多的压缩,但通常