我有一个在PostgreSQL 8.3上运行的中型数据库集群。
数据库将数字文件(图像)存储为LOB。
数据库集群中有相当多的活动,很多内容都是以持续的方式创建和删除的。
即使承载OID的应用程序表由应用程序正确维护(删除映像文件时),数据库集群的大小也会不断增长。
自动吸尘处于活动状态,因此不应该这样做。
答案 0 :(得分:4)
当应用程序表(包含OID)的行被删除时,不会从数据库中删除LOB。
这也意味着VACUUM流程不会回收空间。
为了摆脱未使用的LOB,您已在数据库上运行VACUUMLO。 Vacuumlo将从数据库中删除所有未引用的LOB。
示例电话:
vacuumlo -U postgres -W -v <database_name>
(我只包含-v使easlo更加冗长,以便你看到它删除了多少LOB)
在vacuumlo删除LOB后,您可以运行VACUUM FULL(或让自动真空过程运行)。