如何回收 PostgreSQL 中未使用的 LOB 占用的空间

2024-04-03

我有一个在 PostgreSQL 8.3 上运行的中型数据库集群。

数据库将数字文件(图像)存储为 LOB。

数据库集群中有相当多的活动,大量内容以持续的方式创建和删除。

尽管托管 OID 的应用程序表由应用程序正确维护(当删除映像文件时),数据库集群的大小仍在不断增长。

自动清理功能处于活动状态,因此不应发生这种情况。


当删除应用程序表(包含 OID)的行时,LOB 不会从数据库中删除。

这也意味着 VACUUM 进程不会回收空间。

为了删除未使用的 LOB,您已在数据库上运行 VACUUMLO。 Vacuumlo 将从数据库中删除所有未引用的 LOB。

调用示例:

vacuumlo -U postgres -W -v <database_name>

(我只是添加了 -v 来使 Vacuumlo 更详细一些,这样您就可以看到它删除了多少个 LOB)

在vacuumlo删除LOB后,您可以运行VACUUM FULL(或让自动vacuum进程运行)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何回收 PostgreSQL 中未使用的 LOB 占用的空间 的相关文章

随机推荐