vacuumlo — 从 PostgreSQL 数据库中删除孤立大对象
vacuumlo
[选项
...] 数据库名
...
vacuumlo 是一个简单的实用程序,将删除任何 “孤立” 大对象 (LO) 出 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构建一个临时表,其中包含所选数据库中所有大对象 (LO) 的 OID。然后,它扫描数据库中所有类型为oid
或lo
的列,并从临时表中删除匹配的条目。(注意:仅考虑具有这些名称的类型;特别是,不考虑它们之上的域。)临时表中的剩余条目标识为孤立 LO。这些都会被删除。
Peter Mount <[email protected]>