↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5
历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.

vacuumdb

vacuumdb — 对一个 PostgreSQL 数据库进行垃圾收集和分析

大纲

vacuumdb [connection-options...] [[--full] | [-f]] [[--verbose] | [-v]] [[--analyze] | [-z]] [--table | -t 'table [( column [,...] )]' ] [dbname]
vacuumdb [connection-options...] [[--all] | [-a]] [[--full] | [-f]] [[--verbose] | [-v]] [[--analyze] | [-z]]

描述

vacuumdb 是用于清理 PostgreSQL 数据库的工具。vacuumdb 还会生成供 PostgreSQL 查询优化器使用的内部统计信息。

vacuumdb 是一个外壳脚本包装,它通过 PostgreSQL 的交互式终端psql调用后端命令VACUUM。通过这种方式清理数据库与其他方法没有实质差别。脚本必须能找到 psql,而且目标主机上必须有数据库服务器在运行。此外,适用于 psql 和 libpq 前端库的任何默认设置和环境变量也同样有效。

vacuumdb 可能需要多次连接 PostgreSQL 服务器,每次都要询问口令。这种情况下准备一个 $HOME/.pgpass 文件会很方便。

选项

vacuumdb接受下列命令行参数:

[-d] dbname
[--dbname] dbname

指定要清理或分析的数据库名称。如果未指定并且没有使用 -a(或--all),则从环境变量 PGDATABASE 中读取数据库名。如果该变量未设置,则使用连接时指定的用户名。

-a
--all

清理所有数据库。

-e
--echo

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

-f
--full

执行“完全”清理。

-q
--quiet

不显示响应。

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

只清理或分析 table。列名只能与 --analyze 选项一起指定。

提示

如果你指定了要清理(vacuum)的列,可能需要向 shell 转义括号。

-v
--verbose

在处理过程中输出详细信息。

-z
--analyze

同时计算供优化器使用的统计信息。

vacuumdb还接受下列用于连接参数的命令行参数:

-h host
--host host

指定服务器所在机器的主机名。如果 host 以斜杠开头,它被用作 Unix 域套接字的目录。

-p port
--port port

指定服务器正在监听连接的 Internet TCP/IP 端口或本地 Unix 域套接字文件扩展名

-U username
--username username

连接时使用的用户名。

-W
--password

强制口令提示。

诊断

VACUUM

一切正常。

vacuumdb: Vacuum failed.

出了问题。vacuumdb 只是一个包装脚本。关于错误消息和潜在问题的详细讨论,参见VACUUM和psql。

环境

PGDATABASE
PGHOST
PGPORT
PGUSER

默认连接参数。

示例

清理数据库 test:

$ vacuumdb test

清理并为优化器分析数据库 bigdb:

$ vacuumdb --analyze bigdb

清理单个表 foo,它位于数据库 xyzzy 中,并为优化器分析该表的单列 bar:

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

另见

VACUUM

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.