pg_squeeze 和 pg_repack 有什么区别?

What is difference between pg_squeeze and pg_repack?

我一直致力于优化数据库中的 tables。我们的 table 之一需要每月清理一次,因为清理 processes.pg_squeeze Table 大小可能达到 25 GB。由于此 table 由生产用户使用,我们无法承受每月 运行 VACUUM FULL.

的停机时间

我发现 pg_squeeze and pg_repack 可以用于此目的。但是我无法理解这两者之间的区别。谁能解释一下有什么区别,哪个更适合我使用table?

谢谢。

主要区别在于 pg_queeze 完全在数据库内部运行,不需要外部二进制文件。它还有一个后台工作人员,如果满足某些条件,将安排 table 自动重写。

所以你可以说 pg_repack 侵入性较小(例如,安装不需要重新启动数据库),但 pg_squeeze 功能更完整。

免责声明:我在写 pg_squeeze 的公司工作。

感谢您的提问,我正在寻找相同的问题。

有一点可能会影响一个人的决定 - 运行 在托管数据库上时的扩展支持。例如 AWS RDS 支持 pg_repack 但不支持 pg_squeeze.