vacuumdb
vacuumdb — 清理并分析一个 Postgres 数据库
大纲
vacuumdb [ --analyze | -z ] [ --verbose | -v ] [dbname] vacuumdb [ -hhost] [ -pport] [ --table 'table[ (column[,...] ) ]' ] [dbname]
输入
vacuumdb 接受下列命令行参数:
-
dbname 指定要清理或分析的数据库名。
dbname默认为环境变量USER的值。- --analyze
-z 为优化器的使用计算数据库的统计信息。
- --verbose
-v 在处理过程中输出详细信息。
- --table
table[ (column[,...]) ]
-ttable[ (column[,...]) ] 只清理或分析
table。列名只能在配合--analyze选项时指定。
vacuumdb 还接受下列用于连接参数的命令行参数:
- -h
host 指定 postmaster 所在机器的主机名。默认使用本地 Unix 域套接字而不是 IP 连接。
- -p
port 指定 postmaster 正在监听连接的 Internet TCP/IP 端口或本地 Unix 域套接字文件扩展名。端口号默认为 5432,或环境变量
PGPORT的值(如果设置了的话)。- -u
使用口令认证。提示输入
username和password。
输出
vacuumdb 在指定的数据库上执行一条 VACUUM 命令,因此没有显式的外部输出。
- ERROR: Can't vacuum columns, only tables. You can 'vacuum analyze' columns.
vacuumdb: database vacuum failed on
dbname. 非分析模式要求清理完整的表或数据库。只有在分析特定表时才能指定单个列。
- Connection to database 'template1' failed.
connectDB() failed: Is the postmaster running and accepting connections
at 'UNIX Socket' on port '
port'? vacuumdb 无法连接到指定主机和端口上的 postmaster 进程。如果看到这条消息,请确保 postmaster 在正确的主机上运行,并且你指定了正确的端口。如果你的站点使用认证系统,请确保你已获得所需的认证凭据。
- Connection to database '
dbname' failed. FATAL 1: SetUserId: user 'username' is not in 'pg_shadow' 你在关系
pg_shadow中没有有效条目,将不被允许访问 Postgres。请联系你的 Postgres 管理员。
注意
vacuumdb 内部执行一条
VACUUM SQL 语句。如果你在运行
vacuumdb 时遇到问题,请确保你能够(例如用
psql)在该数据库上执行
VACUUM。
描述
vacuumdb 是一个用于清理 Postgres 数据库的工具。vacuumdb 还会生成供 Postgres 查询优化器使用的内部统计信息。
注意
更多细节参见VACUUM。
用法
要清理一个与用户同名的数据库:
% vacuumdb
要为优化器分析名为 bigdb 的数据库:
% vacuumdb --analyze bigdb
要为优化器分析数据库
xyzzy 中表
foo 的单个列
bar:
% vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy