On this page
vacuumlo
vacuumlo —从 PostgreSQL 数据库中删除孤立的大对象
Synopsis
vacuumlo
[ option
...] dbname
...
Description
vacuumlo 是一个简单的 Util,它将从 PostgreSQL 数据库中删除所有“孤立的”大对象。孤立的大对象(LO)被认为是其 OID 没有出现在数据库的任何oid
或lo
数据列中的任何 LO。
如果您使用此功能,您可能还会对lo模块中的lo_manage
触发器感兴趣。 lo_manage
有助于避免一开始就创建孤立的 LO。
将处理在命令行上命名的所有数据库。
Options
vacuumlo 接受以下命令行参数:
-l
limit
- 每笔 Transaction 最多删除*
limit
*个大对象(默认为 1000)。由于服务器会为删除的每个 LO 获取一个锁,因此在一个事务中删除太多 LO 的风险可能超过max_locks_per_transaction。如果要在单个事务中完成所有清除,请将限制设置为零。
- 每笔 Transaction 最多删除*
-n
- 不要删除任何内容,只是显示将要执行的操作。
-v
- 写很多进度消息。
-V
--version
- 打印 vacuumlo 版本并退出。
-?
--help
- 显示有关 vacuumlo 命令行参数的帮助,然后退出。
vacuumlo 还接受以下命令行参数作为连接参数:
-h
hostname
- 数据库服务器的主机。
-p
port
- 数据库服务器的端口。
-U
username
- 连接的用户名。
-w
--no-password
- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
.pgpass
文件)无法使用密码,则连接尝试将失败。该选项在没有用户 Importing 密码的批处理作业和脚本中很有用。
- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
-W
- 强制 vacuumlo 在连接数据库之前提示 Importing 密码。
此选项从不是必需的,因为如果服务器要求密码验证,vacuumlo 将自动提示 Importing 密码。但是,vacationlo 将浪费连接尝试,因为它发现服务器需要密码。在某些情况下,值得 Importing-W
以避免额外的连接尝试。
Notes
vacuumlo 通过以下方法工作:首先,vacuumlo 构建一个临时表,该表包含所选数据库中大对象的所有 OID。然后,它会扫描数据库中所有类型为oid
或lo
的列,并从临时表中删除匹配的条目。 (注意:仅考虑具有这些名称的类型;特别是不考虑它们的域.)临时表中的其余条目标识孤立的 LO。这些已删除。
Author
彼得·蒙特<peter@retep.org.uk>