我有一个在 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(使用前将#替换为@)