vacuumlo — 从 PostgreSQL 数据库中删除孤立的大对象
vacuumlo
[选项
...] dbname
...
vacuumlo 是一个简单的实用程序,它将从 PostgreSQL 数据库中删除任何“孤立”的大对象。如果一个大对象 (LO) 的 OID 没有出现在数据库的任何 oid
或 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
--host=host
数据库服务器的主机。
-p port
--port=port
数据库服务器的端口。
-U username
--username=username
用于连接的用户名。
-w
--no-password
从不发出密码提示。如果服务器需要密码验证,并且没有其他方式(例如 .pgpass
文件)提供密码,则连接尝试将失败。此选项在批处理作业和脚本中很有用,因为其中没有用户来输入密码。
-W
--password
强制 vacuumlo 在连接到数据库之前提示输入密码。
此选项并非必不可少,因为如果服务器要求密码验证,vacuumlo 将自动提示输入密码。 但是,vacuumlo 将浪费一次连接尝试来查明服务器是否需要密码。 在某些情况下,输入 -W
以避免额外的连接尝试是值得的。
PGHOST
PGPORT
PGUSER
默认连接参数。
与大多数其他 PostgreSQL 实用程序一样,此实用程序还使用 libpq 支持的环境变量(请参阅第 32.15 节)。
环境变量 PG_COLOR
指定是否在诊断消息中使用颜色。 可能的值为 always
、auto
和 never
。
vacuumlo 按以下方法工作:首先,vacuumlo 构建一个临时表,其中包含所选数据库中所有大对象的 OID。 然后,它扫描数据库中所有类型为 oid
或 lo
的列,并从临时表中删除匹配的条目。(注意:仅考虑具有这些名称的类型;特别是,不考虑它们之上的域。)临时表中剩余的条目标识孤立的 LO。 这些将被删除。
Peter Mount <[email protected]>
如果您在文档中看到任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单来报告文档问题。