vacuumlo — 从 PostgreSQL 数据库中移除孤立的大对象
vacuumlo [选项...] 数据库名...
vacuumlo 是一个简单的实用程序,用于从 PostgreSQL 数据库中移除所有“孤立”的大对象。一个孤立的大对象 (LO) 被认为是任何其 OID 不出现在数据库的任何 oid 或 lo 数据列中的 LO。
如果您使用此工具,您可能还对 lo 模块中的 lo_manage 触发器感兴趣。lo_manage 有助于尝试从一开始就避免创建孤立的 LO。
命令行中列出的所有数据库都会被处理。
vacuumlo 接受以下命令行参数
-l limit--limit=limit每次事务最多移除 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 以避免额外的连接尝试是值得的。
PGHOSTPGPORTPGUSER默认连接参数。
此实用程序以及大多数其他 PostgreSQL 实用程序也使用 libpq 支持的环境变量(请参阅 第 32.15 节)。
环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值为 always、auto 和 never。
vacuumlo 的工作方法如下:首先,vacuumlo 构建一个临时表,其中包含所选数据库中所有大对象的 OID。然后,它扫描数据库中所有类型为 oid 或 lo 的列,并从临时表中移除匹配的条目。(注意:仅考虑名称为这些的类型;特别是,以它们为域的类型不被考虑。)临时表中剩余的条目标识孤立的 LO。这些将被移除。
Peter Mount <peter@retep.org.uk>