ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# vacuumdb ## Name vacuumdb --  收集垃圾并分析一个PostgreSQL数据库 ## Synopsis `vacuumdb` [`_connection-option_`...] [`_option_`...] [ `--table` | `-t` `_table_` [( `_column_` [,...] )] ] ... [`_dbname_`] `vacuumdb` [`_connection-option_`...] [`_option_`...] `--all` | `-a` ## 描述 vacuumdb是一个用于整理PostgreSQL 数据库的工具。vacuumdb还将会生成用于 PostgreSQL查询优化器的内部统计数据。 vacuumdb是 SQL 命令[VACUUM](#calibre_link-748)的封装。 因此,用哪种方法清理数据库都一样。 ## 选项 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`选项清理多个表。 > **Tip:** 如果你声明了要清理的字段,你可能不得不在 shell 上逃逸圆括弧(见下面的例子)。 `-v` `--verbose` 在处理过程中打印详细信息。 `-V` `--version` 打印vacuumdb版本然后退出。 `-z` `--analyze` 计算用于优化器的统计数据。 `-Z` `--analyze-only` 只计算用于优化器的该数据库的统计值(不清理)。 `-?` `--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支持的环境变量(参阅[Section 31.14](#calibre_link-39))。 ## 诊断 如果出差错了。参阅[VACUUM](#calibre_link-748)和[psql](#calibre_link-23) 获取关于错误信息和可能问题的详细描述。数据库服务器必须在目标主机上运行。 同样,任何libpq前端库可获得的缺省设置和环境变量都将生效。 ## 注意 vacuumdb可能需要与PostgreSQL 服务器连接若干次,每次都询问口令。在这种情况下,设立一个`~/.pgpass` 文件是比较方便的。参阅[Section 31.15](#calibre_link-457)获取更多信息。 ## 例子 整理数据库`test`: ``` <samp class="literal">$</samp> <kbd class="literal">vacuumdb test</kbd> ``` 为优化器清理和分析一个名为`bigdb`的数据库: ``` <samp class="literal">$</samp> <kbd class="literal">vacuumdb --analyze bigdb</kbd> ``` 清理数据库`xyzzy`中名为`foo`的表, 并且为优化器分析列`bar`: ``` <samp class="literal">$</samp> <kbd class="literal">vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy</kbd> ``` ## 又见 [VACUUM](#calibre_link-748)