vacuumdb

Name

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

Synopsis

vacuumdb [connection-option...] [--full | -f] [--freeze | -F] [--verbose | -v] [--analyze | -z] [--analyze-only | -Z] [--table | -t table [( column [,...] )] ] [dbname]

vacuumdb [connection-option...] [--full | -f] [--freeze | -F] [--verbose | -v] [--analyze | -z] [--analyze-only | -Z] [--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

Aggressively "freeze" tuples.

-q
--quiet

不显示进度消息。

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

只是清理或分析table。 字段名称只是在与--analyze--analyze-only选项联合使用时才需要声明。

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来避免额外的连接尝试。

环境变量

PGDATABASE
PGHOST
PGPORT
PGUSER

缺省连接参数

该实用程序,跟大部分其他PostgreSQL实用程序一样,也是用libpq 支持的环境变量。(请参阅Section 31.13。)

诊断

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

注意

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

例子

整理数据库test

$ vacuumdb test

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

$ vacuumdb --analyze bigdb

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

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

又见

VACUUM