选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.1 已于 2016 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

F.46. vacuumlo #

vacuumlo是一个简单的实用程序,用于从 PostgreSQL数据库中移除孤立的大对象。 孤立的大对象(LO)是指其 OID 没有出现在该数据库任何 oidlo数据列中的 LO。

如果你使用这个程序,也可能会对lo模块中的 lo_manage触发器感兴趣。 lo_manage有助于尽量避免一开始就创建出孤立 LO。

F.46.1. 用法

vacuumlo [options] database [database2 ... databaseN]

命令行上给出的所有数据库都会被处理。可用的选项包括:

-v

输出大量进度消息。

-n

不删除任何内容,只显示将要执行的操作。

-l limit

每个事务最多移除 limit 个大对象(默认值为 1000)。由于服务器会为每个被移除的 LO 获取一个锁,在单个事务中 移除过多 LO 有可能超出 max_locks_per_transaction。如果你希望在单个 事务中完成全部移除,请把该限制设为 0。

-U username

用于连接的用户名。

-w
--no-password

绝不发出密码提示。如果服务器要求密码认证,而又无法通过 .pgpass 文件之类的其他方式获得密码,则 连接尝试将失败。这个选项在批处理作业和脚本中很有用,因为这些 场景下没有用户可以输入密码。

-W

强制 vacuumlo 在连接数据库之前提示 输入密码。

这个选项并非必不可少,因为如果服务器要求密码认证, vacuumlo 会自动提示输入密码。不过, vacuumlo 会浪费一次连接尝试,才知道 服务器需要密码。在某些情况下,为了避免这次额外的连接尝试, 提前指定 -W 是值得的。

-h hostname

Database server's host.

-p port

数据库服务器端口。

F.46.2. 方法

首先,vacuumlo 构建一个临时表,其中包含所选数据 库中所有大对象的 OID。

然后,它会扫描数据库中所有类型为 oidlo 的列, 并从临时表中移除匹配的项。(注意:只会考虑名称正好为这两种的类型; 特别是,基于这些类型定义的域不会被考虑。)

临时表中剩余的项标识出孤立的 LO。这些 LO 会被移除。

F.46.3. 作者

Peter Mount

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。