vacuumdb

Garbage-collects and analyzes a database.

vacuumdb is typically run on system catalog tables. It has no effect when run on HAWQ user tables.

Synopsis

  1. vacuumdb [<connection_options>] [<vacuum_options>] [<database_name>]
  2. vacuumdb [-? | --help]
  3. vacuumdb --version

where:

  1. <connection_options> =
  2. [-h <host> | --host <host>]
  3. [-p <port> | --port <port>]
  4. [-U <username> | --username <username>]
  5. [-w | --no-password]
  6. [-W | --password]
  7. <vacuum_options> =
  8. [(-a | --all) | (-d <dbname> | --dbame <dbname>)]
  9. [-e | --echo]
  10. [-f | --full]
  11. [-F | --freeze]
  12. [-t <tablename> [( column [,...] )] | --table <tablename> [( column [,...] )] ]
  13. [(-v | --verbose) | (-q | --quiet)]
  14. [-z | --analyze]

Description

vacuumdb is a utility for cleaning a PostgreSQL database. vacuumdb will also generate internal statistics used by the PostgreSQL query optimizer.

vacuumdb is a wrapper around the SQL command VACUUM. There is no effective difference between vacuuming databases via this utility and via other methods for accessing the server.

Options

<database_name>

Identifies the name of the database to vacuum. If both this option and the -d option are not provided, the environment variable PGDATABASE is used. If that is not set, the user name specified for the connection is used.

<vacuum_options>

-a, —all

Vacuums all databases.

-d, —dbname <dbname>

The name of the database to vacuum. If this option is not specified, <database_name> is not provided, and --all is not used, the database name is read from the environment variable PGDATABASE. If that is not set, the user name specified for the connection is used.

-e, —echo

Show the commands being sent to the server.

-f, —full

Selects a full vacuum, which may reclaim more space, but takes much longer and exclusively locks the table.

Warning: A VACUUM FULL is not recommended in HAWQ.

-F, —freeze

Freeze row transaction information.

-q, —quiet

Do not display a response.

-t, —table <tablename>[(<column>)]

Clean or analyze this table only. Column names may be specified only in conjunction with the --analyze option. If you specify columns, you probably have to escape the parentheses from the shell.

-v, —verbose

Print detailed information during processing.

-z, —analyze

Collect statistics for use by the query planner.

<connection_options>

-h, —host <host>

Specifies the host name of the machine on which the HAWQ master database server is running. If not specified, reads from the environment variable PGHOST or defaults to localhost.

-p, —port <port>

Specifies the TCP port on which the HAWQ master database server is listening for connections. If not specified, reads from the environment variable PGPORT or defaults to 5432.

-U, —username <username>

The database role name to connect as. If not specified, reads from the environment variable PGUSER or defaults to the current system user name.

-w, —no-password

Never issue a password prompt. If the server requires password authentication and a password is not available by other means such as a .pgpass file, the connection attempt will fail. This option can be useful in batch jobs and scripts where no user is present to enter a password.

-W, —password

Force a password prompt.

Notes

vacuumdb might need to connect several times to the master server, asking for a password each time. It is convenient to have a ~/.pgpass file for such cases.

Examples

To clean the database test:

  1. $ vacuumdb testdb

To clean and analyze a database named bigdb:

  1. $ vacuumdb --analyze bigdb

To clean a single table foo in a database named mydb, and analyze a single column bar of the table:

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

Note the quotes around the table and column names to escape the parentheses from the shell.