2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

vacuumlo

vacuumlo — 从 PostgreSQL 数据库中删除孤立的大对象

概要

vacuumlo [选项...] 数据库名...

描述

vacuumlo 是一个简单的实用程序,用于从 PostgreSQL 数据库中删除任何 孤立的 大对象。孤立的大对象 (LO) 被认为是其 OID 不出现在数据库中任何 oidlo 数据列中的任何 LO。

如果您使用此工具,您可能还会对 lo 模块中的 lo_manage 触发器感兴趣。 lo_manage 可用于尝试避免从一开始就创建孤立的 LO。

命令行中指定的数据库将全部被处理。

选项

vacuumlo 接受以下命令行参数

-l 限制
--limit=限制

每个事务最多删除 限制 个大对象(默认值为 1000)。由于服务器会为删除的每个 LO 获取一个锁,因此在一个事务中删除过多 LO 会有超过 max_locks_per_transaction 的风险。如果希望在一个事务中完成所有删除操作,请将限制设置为零。

-n
--dry-run

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

-v
--verbose

写入大量的进度信息。

-V
--version

打印 vacuumlo 版本并退出。

-?
--help

显示有关 vacuumlo 命令行参数的帮助信息,并退出。

vacuumlo 还接受以下用于连接参数的命令行参数

-h 主机
--host=主机

数据库服务器的主机。

-p 端口
--port=端口

数据库服务器的端口。

-U 用户名
--username=用户名

要连接的用户名称。

-w
--no-password

从不发出密码提示。如果服务器需要密码身份验证,并且没有通过其他方式(如 .pgpass 文件)提供密码,则连接尝试将失败。此选项在不需要用户输入密码的批处理作业和脚本中非常有用。

-W
--password

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

此选项并非必不可少,因为 vacuumlo 会在服务器要求密码身份验证时自动提示输入密码。但是,vacuumlo 会浪费一次连接尝试来确定服务器是否需要密码。在某些情况下,输入 -W 以避免额外的连接尝试是值得的。

环境

PGHOST
PGPORT
PGUSER

默认连接参数。

此工具与大多数其他 PostgreSQL 工具一样,也使用 libpq 支持的环境变量(请参阅 第 32.15 节)。

环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值为 alwaysautonever

备注

vacuumlo 的工作原理如下:首先,vacuumlo 创建一个临时表,其中包含所选数据库中所有大对象的 OID。然后,它扫描数据库中所有类型为 oidlo 的列,并从临时表中删除匹配的条目。(注意:只有这些名称的类型才会被考虑;特别是,在这些类型上的域不会被考虑。)临时表中剩余的条目标识了孤立的 LO。这些 LO 将被删除。

作者

Peter Mount

提交更正

如果您在文档中发现任何错误,或者它与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表格 报告文档问题。