PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# vacuumdb

## 名称

vacuumdb -- 收集垃圾并分析一个PostgreSQL数据库

## 大纲

`vacuumdb` [`connection-option`...] [`option`...] [ `--table` | `-t` `table` [( `column` [,...] )] ] ... [`dbname`]

`vacuumdb` [`connection-option`...] [`option`...] `--all` | `-a`

## 描述

vacuumdb是一个用于整理PostgreSQL 数据库的工具。vacuumdb还将会生成用于 PostgreSQL查询优化器的内部统计数据。

vacuumdb是 SQL 命令VACUUM的封装。 因此，用哪种方法清理数据库都一样。

## 选项

vacuumdb接受下列命令行参数：

`-a`
`--all`

  清理所有数据库。

`[-d] `dbname``
`[--dbname=]`dbname``

  声明要被清理或分析的数据库名称。如果没有声明这个参数并且没有使用`-a` 或`--all`，那么从将环境变量`PGDATABASE`里读取数据库名。 如果那个也没有设置，则使用连接的用户名。

`-e`
`--echo`

  回显vacuumdb生成并发送给服务器的命令。

`-f`
`--full`

  执行"完全"清理。

`-F`
`--freeze`

  强制"冻结"元组。

`-q`
`--quiet`

  不显示进程信息。

`-t `table` [ (`column` [,...]) ]`
`--table=`table` [ (`column` [,...]) ]`

  只是清理或分析`table`。 字段名称只是在与`--analyze`或`--analyze-only` 选项联合使用时才需要声明。可以通过写多个`-t`选项清理多个表。

  > 提示: 如果你声明了要清理的字段，你可能不得不在 shell 上转义圆括弧(见下面的例子)。

`-v`
`--verbose`

  在处理过程中打印详细信息。

`-V`
`--version`

  打印vacuumdb版本然后退出。

`-z`
`--analyze`

  计算用于优化器的统计数据。

`-Z`
`--analyze-only`

  只计算用于优化器的该数据库的统计值（不清理）。

`--analyze-in-stages`

  只计算优化器使用的统计（没有清理），像`--analyze-only`。 用不同的配置设置运行几个（当前是3个）阶段的分析，以更快的产生可用的统计。

  这个选项对于分析刚用存储的转储或通过`pg_upgrade` 填充的数据库来说是有用的。这个选项将尽快的尝试创建一些统计， 使得数据库可用，然后在随后的阶段中产生完全统计。

`-?`
`--help`

  显示关于vacuumdb命令行参数的帮助然后退出。

vacuumdb还接受下列命令行参数作为连接参数：

`-h `host``
`--host=`host``

  指定运行服务器的主机名。如果数值以斜杠开头，则被用作到 Unix 域套接字的路径。

`-p `port``
`--port=`port``

  指定服务器正在侦听的 TCP 端口或本地 Unix 域套接字文件的扩展(描述符)。

`-U `username``
`--username=`username``

  连接的用户名。

`-w`
`--no-password`

  从不发出密码提示问题。如果服务器要求密码认证并且密码不可用于其他意思如 `.pgpass`文件，则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。

`-W`
`--password`

  强制vacuumdb在连接到数据库之前提示一个密码。

  这个选项从来不是至关重要的，因为如果服务器需求密码认证，则vacuumdb 自动提示一个密码。不过，vacuumdb 将在找出服务器想要一个密码上浪费一个连接尝试。在某些情况下，值得输入`-W` 以避免额外的连接尝试。

`--maintenance-db=`dbname``

  指定要连接到的数据库的名字以发现其他应该清理的数据库。如果没有指定， 那么将使用`postgres`数据库，如果该数据库不存在， 则使用`template1`。

## 环境变量

`PGDATABASE`
`PGHOST`
`PGPORT`
`PGUSER`

  缺省连接参数

这个工具，类似大多数其他PostgreSQL实用工具， 也使用由libpq支持的环境变量（参阅第 31.14 节）。

## 诊断

如果出差错了。参阅VACUUM和psql 获取关于错误消息和可能问题的详细描述。数据库服务器必须在目标主机上运行。 同样，任何libpq前端库可获得的缺省设置和环境变量都将生效。

## 注意

vacuumdb可能需要与PostgreSQL 服务器连接若干次，每次都询问口令。在这种情况下，设立一个`~/.pgpass` 文件是比较方便的。参阅第 31.15 节获取更多信息。

## 例子

整理数据库`test`：

    $ vacuumdb test

为优化器清理和分析一个名为`bigdb`的数据库：

    $ vacuumdb --analyze bigdb

清理数据库`xyzzy`中名为`foo`的表， 并且为优化器分析列`bar`：

    $ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy

## 又见

VACUUM

上一页 | 起始页 | 下一页
reindexdb | 上一级 | PostgreSQL 服务器应用程序