vacuumdb
功能描述
vacuumdb是用于清理和分析Vastbase数据库的工具,是对SQL命令VACUUM的封装。
语法格式
vacuumdb [OPTION]... [DBNAME]
参数说明
通用参数
-a, --all
清理或分析所有数据库。
-d, --dbname=DBNAME
声明要被清理或分析的数据库名称。
如果没有声明这个参数并且没有使用
-a
或\--all
参数,那么从将环境变量PGDATABASE里读取数据库名。 >- 如果未设置环境变量PGDATABASE,则使用连接的用户名。-e, --echo
回显vacuumdb生成并发送给服务器的命令。
-f, --full
执行“完全”清理,指定该选项可以回收更多的空间,但是需要更长的时间,并需要在表上添加排它锁。
使用该选项需要额外的磁盘空间,因为它会写入表的新副本,并且在操作完成之前不会释放旧副本。通常,只有在需要从表格中回收大量空间时才应使用此选项。
使用该选项会导致统计信息丢失,如果要收集统计信息,需要搭配
--analyze
选项一起使用。
-F, --freeze
强制“冻结”元组。
-q, --quiet
不显示响应信息。
-t, --table='TABLE[(COLUMNS)]'
指定要清理的表。 可以通过写入多个-t来清理多个表。
当指定列名时需要搭配
--analyze
选项一起使用。如果指定某个字段进行清理,必须要在shell上转义圆括弧,例如:
vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy
-v, --verbose
在处理过程中打印详细信息。
-V, --version
打印vacuumdb版本然后退出。
-z, --analyze
收集统计信息以供查询优化器使用。
-Z, --analyze-only
仅计算统计信息以供查询优化器使用(不清理)。
-?, --help
显示帮助信息。
连接参数
-h, --host=HOSTNAME
运行Vastbase数据库服务器的计算机主机名。 如果数值以斜杠开头,则被用作到 Unix 域套接字的路径。
-p, --port=PORT
指定服务器正在侦听的 TCP 端口或本地 Unix 域套接字文件的扩展(描述符)。
-U, --username=USERNAME
连接的用户名。
-w, --no-password
不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。
-W, --password
强制vacuumdb在连接到数据库之前提示一个密码。
--maintenance-db=DBNAME
指定要连接到的数据库的名字以发现其他应该清理的数据库。
使用示例
用户可以使用VACUUM工具去清理数据库,以保证不断地删除失效的行。尤其是在增删了大量记录之后,对受影响的表执行 VACUUM ANALYZE
命令是一个很好的习惯,这样做将更新系统目录为最近的更改,并且允许 PostgreSQL 查询优化器在规划用户查询时有更好的选择。
例如,当用户想要在数据库里某个表上执行VACUUM,可以执行如下命令:
vacuumdb --analyze --verbose --table upser db_mysql