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的封装。 因此,用哪种方法清理数据库都一样。
选项
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)。
诊断
如果出差错了。参阅VACUUM和psql 获取关于错误信息和可能问题的详细描述。数据库服务器必须在目标主机上运行。 同样,任何libpq前端库可获得的缺省设置和环境变量都将生效。
注意
vacuumdb可能需要与PostgreSQL 服务器连接若干次,每次都询问口令。在这种情况下,设立一个~/.pgpass
文件是比较方便的。参阅Section 31.15获取更多信息。
例子
整理数据库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>