vacuumdb命令的作用是可以清理并优化一个PostgreSQL数据库。
vacuumdb命令也将产生由PostgreSQL查询优化器所使用的内部统计信息。
vacuumdb命令是SQL命令VACUUM的一个包装器。在通过这个工具和其他方法访问服务器来清理和分析数据库之间没有实质性的区别。虽然在新版本的PostgreSQL中有自动的vacuum,但是如果是大批量的数据IO可能会导致自动执行很慢,需要配合手动执行以及自己的脚本来清理数据库。
****语法格式:**** vacuumdb [参数] [数据库名]
| -a | 清理所有的数据库 |
| ---------------- | ------------------------------------------ |
| -d<数据库名称> | 清理指定的数据库 |
| -e | 显示发送到服务端的命令 |
| -f | 完全清理 |
| -F | 冻结记录的事务信息 |
| -q | 不写任何信息 |
| -t<表名> | 只清理指定的表 |
| -U<用户名> | 指定连接的用户名 |
| -w | 永远不提示输入口令 |
| -W | 强制提示输入口令 |
| -h<主机名> | 数据库服务器所在主机的主机名或套接字目录 |
| -p<端口号> | 指定数据库服务器端口号 |
| -z | 更新优化器信息 |
| -v | 输出大量的信息 |
**参考实例**
清理所有的数据库:
```
[root@anycode ~]# su - postgres
$ vacuumdb -a
```
为优化器清理和分析一个名为bigdb的数据库:
```
[root@anycode ~]# su - postgres
$ vacuumdb -z bigdb
```
清理数据库linuxcool中的table1表:
```
[root@anycode ~]# su - postgres
$ vacuumdb -d linuxcool -t 'table1'
```