vacuumlo

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

Synopsis

vacuumlo [ option ...] dbname ...

Description

vacuumlo 是一个简单的 Util,它将从 PostgreSQL 数据库中删除所有“孤立的”大对象。孤立的大对象(LO)被认为是其 OID 没有出现在数据库的任何oidlo数据列中的任何 LO。

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

将处理在命令行上命名的所有数据库。

Options

vacuumlo 接受以下命令行参数:

  • -l limit

    • 每笔 Transaction 最多删除* limit *个大对象(默认为 1000)。由于服务器会为删除的每个 LO 获取一个锁,因此在一个事务中删除太多 LO 的风险可能超过max_locks_per_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。然后,它会扫描数据库中所有类型为oidlo的列,并从临时表中删除匹配的条目。 (注意:仅考虑具有这些名称的类型;特别是不考虑它们的域.)临时表中的其余条目标识孤立的 LO。这些已删除。

Author

彼得·蒙特<[email protected]>