3

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

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

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

即使承载 OID 的应用程序表由应用程序正确维护(当删除图像文件时),数据库集群的大小也会持续增长。

自动吸尘处于活动状态,因此不应发生这种情况。

4

1 回答 1

4

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

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

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

示例调用:

vacuumlo -U postgres -W -v <database_name>

(我只包含了 -v 以使 vacuumlo 更详细一些,以便您查看它删除了多少 LOB)

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

于 2013-06-26T18:13:42.880 回答