vacuumlo
vacuumlo — 从 PostgreSQL 数据库中移除孤立的大对象
大纲
vacuumlo [option...] dbname...
描述
vacuumlo 是一个简单的实用程序,用于从
PostgreSQL 数据库中移除“孤立的”大对象。孤立的大对象(LO)是指其 OID 没有出现在该数据库任何
oid 或 lo 数据列中的 LO。
如果你使用这个程序,也可能会对 lo 模块中的
lo_manage 触发器感兴趣。lo_manage 有助于尽量避免一开始就创建出孤立 LO。
命令行中给出的所有数据库都会被处理。
选项
vacuumlo 接受下列命令行参数:
-llimit--limit=limit每个事务最多移除
limit个大对象(默认值为 1000)。由于服务器会为每个被移除的 LO 获取一个锁,在单个事务中移除过多 LO 有可能超出 max_locks_per_transaction。如果你希望在单个事务中完成全部移除,请把该限制设为 0。-n--dry-run不实际移除任何内容,只显示将要执行的操作。
-v--verbose输出大量进度消息。
-V--version打印 vacuumlo 版本并退出。
-?--help显示 vacuumlo 命令行参数的帮助并退出。
vacuumlo 还接受下列用于连接参数的命令行参数:
-hhost--host=host数据库服务器主机。
-pport--port=port数据库服务器端口。
-Uusername--username=username用于连接的用户名。
-w--no-password绝不发出密码提示。如果服务器要求密码认证,而又无法通过其他方式(例如
.pgpass文件)获得密码,则连接尝试将失败。这个选项在批处理作业和脚本中很有用,因为这些场景下没有用户可以输入密码。-W--password强制 vacuumlo 在连接数据库之前提示输入密码。
这个选项并非必不可少,因为如果服务器要求密码认证,vacuumlo 会自动提示输入密码。不过,vacuumlo 会浪费一次连接尝试,才知道服务器需要密码。在某些情况下,为了避免这次额外的连接尝试,提前指定
-W是值得的。
环境
PGHOSTPGPORTPGUSER默认连接参数。
与大多数其他 PostgreSQL 工具一样,此工具也使用 libpq 支持的环境变量(见第 34.15 节)。
环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值为 always、auto 和 never。
注解
vacuumlo 按以下方法工作:首先,vacuumlo 构建一个临时表,其中包含所选数据库中所有大对象的 OID。然后,它会扫描数据库中所有类型为
oid 或 lo 的列,并从临时表中移除匹配的项。(注意:只会考虑名称正好为这两种的类型;特别是,基于这些类型定义的域不会被考虑。)临时表中剩余的项标识出孤立 LO,并会被移除。
作者
Peter Mount <peter@retep.org.uk>
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.