首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何回收PostgreSQL中未使用的LOB占用的空间

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

Stack Overflow用户
提问于 2013-06-27 02:13:43
回答 1查看 3.5K关注 0票数 3

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

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 02:13:43

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

这也意味着真空过程不会回收空间。

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

示例调用:

代码语言:javascript
复制
vacuumlo -U postgres -W -v <database_name>

(我包含的-v只是为了让vacuumlo更冗长一点,这样你就可以看到它删除了多少LOB)

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17327489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档