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
vacuumdb [<connection_options>] [<vacuum_options>] [<database_name>]
vacuumdb [-? | --help]
vacuumdb --version
where:
<connection_options> =
[-h <host> | --host <host>]
[-p <port> | --port <port>]
[-U <username> | --username <username>]
[-w | --no-password]
[-W | --password]
<vacuum_options> =
[(-a | --all) | (-d <dbname> | --dbame <dbname>)]
[-e | --echo]
[-f | --full]
[-F | --freeze]
[-t <tablename> [( column [,...] )] | --table <tablename> [( column [,...] )] ]
[(-v | --verbose) | (-q | --quiet)]
[-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
:
$ vacuumdb testdb
To clean and analyze a database named bigdb
:
$ vacuumdb --analyze bigdb
To clean a single table foo
in a database named mydb
, and analyze a single column bar
of the table:
$ vacuumdb --analyze --verbose --table 'foo(bar)' mydb
Note the quotes around the table and column names to escape the parentheses from the shell.