vacuumdb

垃圾收集以及分析数据库。

概要

  1. vacuumdb [connection-option...] [--full | -f] [-F] [--verbose | -v]
  2. [--analyze | -z] [--table | -t table [( column [,...] )] ] [dbname]
  3. vacuumdb [connection-options...] [--all | -a] [--full | -f] [-F]
  4. [--verbose | -v] [--analyze | -z]
  5. vacuumdb --help
  6. vacuumdb --version

描述

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

vacuumdb是SQL命令VACUUM的包装程序。通过这个工具和通过其他访问服务器的方法清理数据库没有实际区别。

选项

-a | —all

清理所有数据库。

[-d] dbname | [—dbname] dbname

要清理的数据库名。如果没有指定并且没有使用-all,会从环境变量PGDATABASE中读取数据库名。如果环境变量也没设置,将使用连接所指定的用户名作为数据库名。

-e | —echo

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

-f | —full

选择一次完全清理,它可以回收更多空间,但是也会花费更长时间并且排他性地锁定表。

警告:在Greenplum数据库中不推荐使用VACUUM FULL。

-F | —freeze

冻结行事务信息。

-q | —quiet

不要显示响应信息。

-t table [(column)] | —table table [(column)]

仅清理或者分析这个表。只能在使用--analyze选项时指定列名。如果指定列,用户可能必须从shell转义圆括号。

-v | —verbose

在处理期间打印详细信息。

-z | —analyze

收集查询规划器使用的统计信息。

连接选项

-h host | —host host

指定Greenplum的Master数据库服务器在其上运行的机器的主机名。如果没有指定,会从环境变量PGHOST读取或者默认为localhost。

-p port | —port port

指定Greenplum的Master数据库服务器在其上监听连接的TCP端口。如果没有指定,会从环境变量PGPORT读取或者默认为5432。

-U username | —username username

要用其进行连接的数据库角色名。如果没有指定,会从环境变量PGUSER读取或者默认为当前系统用户名。

-w | —no-password

从不发出口令提示。如果服务器要求口令认证并且不能通过其他方式(例如.pgpass文件)提供口令,则连接尝试将会失败。这个选项对于批作业和脚本很有用,因为这些情况下不会有用户输入口令。

-W | —password

强制口令提示。

注解

vacuumdb可能需要多次连接到Master服务器,每次都要求口令。在这类情况下,使用~/.pgpass文件会很方便。

示例

要清理数据库test:

  1. vacuumdb test

要清理并且分析名为bigdb的数据库:

  1. vacuumdb --analyze bigdb

要清理名为mydb的数据库中的单一表foo,并且分析该表的单一列bar。注意表明和列名周围的引号是为了从shell转义圆括号:

  1. vacuumdb --analyze --verbose --table 'foo(bar)' mydb

另见

VACUUMANALYZE