vacuumlo 是一个 "会" 从 PostgreSQL 数据库移除所有孤立的大对象的简单程序. 一个大对象(LO)被认为是OID不在任何数据库的数据列的 oid 或者or lo 中的LO.
当摸使用它, 你可能会对 lo 模块中的lo_manage
触发器感兴趣.
lo_manage
在一开始尝试避免创造孤立的LOs是非常有用的.
命令行中出现的数据库都是处理过的.
vacuumlo 接受下面的命令行参数:
每个事务移除不超过 限制 数量的大对象 (默认 1000). 如果服务每移除一个LO就获得一个锁, 在一个事务中移除太多的LOs是非常危险的 max_locks_per_transaction. 如果你想要所有移除在一个单独的事务设置限制为0.
不移除任何东西,只是显示什么将要被执行.
输出一系列的进度信息.
打印 vacuumlo 版本并且退出.
显示 vacuumlo 的命令行参数, 并且退出.
vacuumlo 也接受下面的命令行参数作为连接参:
数据库服务器的主机.
数据库服务器的端口.
作为连接服务器的用户名.
从来不发出密码提示. 如果服务器要求密码认证并且通过其他方法比如.pgpass 文件中不能获取, 连接尝试将会失败. 在批处理任务或脚本中没有用户输入密码的时候这个选项将会变得很有用.
在连接数据库之前强制 vacuumlo 提示密码输入.
这个选项不是必要的, 因为 vacuumlo 将会自动的提示密码输入如果服务器需要密码认证的话. 然而, vacuumlo 将会浪费一个连接尝试去找出服务器是否需要密码. 在某些情况下使用-W选项来避免额外的连接尝试是值得的.
vacuumlo 以下面的方法工作: 首先, vacuumlo 创建一个包含所有选择数据库的大对象OIDs的临时表. 然后扫描数据库中是 oid 或者 lo类型的所有列, 然后从临时表中移除匹配的记录. (注意: 只有这些名字的类型才被考虑; 特别是, 超过它们范围的不被考虑.) 临时表中剩下的记录被认证维LOs对象.它们将会被移除.