<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >vacuumdb</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="PostgreSQL Client Applications" HREF="reference-client.html"><LINK REL="PREVIOUS" TITLE="psql" HREF="app-psql.html"><LINK REL="NEXT" TITLE="PostgreSQL Server Applications" HREF="reference-server.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="REFENTRY" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="app-psql.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="app-psql.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="reference-server.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="reference-server.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="APP-VACUUMDB" ></A ><SPAN CLASS="APPLICATION" >vacuumdb</SPAN ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN50041" ></A ><H2 >Name</H2 >vacuumdb -- garbage-collect and analyze a <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > database</DIV ><A NAME="AEN50045" ></A ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN50047" ></A ><H2 >Synopsis</H2 ><P ><TT CLASS="COMMAND" >vacuumdb</TT > [<TT CLASS="REPLACEABLE" ><I >connection-option</I ></TT >...] [--full | -f] [--verbose | -v] [--analyze | -z] [--table | -t <TT CLASS="REPLACEABLE" ><I >table</I ></TT > [( <TT CLASS="REPLACEABLE" ><I >column</I ></TT > [,...] )] ] [<TT CLASS="REPLACEABLE" ><I >dbname</I ></TT >]<BR><TT CLASS="COMMAND" >vacuumdb</TT > [<TT CLASS="REPLACEABLE" ><I >connection-options</I ></TT >...] [--all | -a] [--full | -f] [--verbose | -v] [--analyze | -z]</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50083" ></A ><H2 >Description</H2 ><P > <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > is a utility for cleaning a <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > database. <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > will also generate internal statistics used by the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > query optimizer. </P ><P > <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > is a wrapper around the SQL command <A HREF="sql-vacuum.html" ><I >VACUUM</I ></A >. There is no effective difference between vacuuming databases via this utility and via other methods for accessing the server. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50093" ></A ><H2 >Options</H2 ><P > <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > accepts the following command-line arguments: <P ></P ></P><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="OPTION" >-a</TT ><BR><TT CLASS="OPTION" >--all</TT ></DT ><DD ><P > Vacuum all databases. </P ></DD ><DT ><TT CLASS="OPTION" >[<SPAN CLASS="OPTIONAL" >-d</SPAN >] <TT CLASS="REPLACEABLE" ><I >dbname</I ></TT ></TT ><BR><TT CLASS="OPTION" >[<SPAN CLASS="OPTIONAL" >--dbname</SPAN >] <TT CLASS="REPLACEABLE" ><I >dbname</I ></TT ></TT ></DT ><DD ><P > Specifies the name of the database to be cleaned or analyzed. If this is not specified and <TT CLASS="OPTION" >-a</TT > (or <TT CLASS="OPTION" >--all</TT >) is not used, the database name is read from the environment variable <TT CLASS="ENVAR" >PGDATABASE</TT >. If that is not set, the user name specified for the connection is used. </P ></DD ><DT ><TT CLASS="OPTION" >-e</TT ><BR><TT CLASS="OPTION" >--echo</TT ></DT ><DD ><P > Echo the commands that <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > generates and sends to the server. </P ></DD ><DT ><TT CLASS="OPTION" >-f</TT ><BR><TT CLASS="OPTION" >--full</TT ></DT ><DD ><P > Perform <SPAN CLASS="QUOTE" >"full"</SPAN > vacuuming. </P ></DD ><DT ><TT CLASS="OPTION" >-q</TT ><BR><TT CLASS="OPTION" >--quiet</TT ></DT ><DD ><P > Do not display a response. </P ></DD ><DT ><TT CLASS="OPTION" >-t <TT CLASS="REPLACEABLE" ><I >table</I ></TT > [ (<TT CLASS="REPLACEABLE" ><I >column</I ></TT > [,...]) ]</TT ><BR><TT CLASS="OPTION" >--table <TT CLASS="REPLACEABLE" ><I >table</I ></TT > [ (<TT CLASS="REPLACEABLE" ><I >column</I ></TT > [,...]) ]</TT ></DT ><DD ><P > Clean or analyze <TT CLASS="REPLACEABLE" ><I >table</I ></TT > only. Column names may be specified only in conjunction with the <TT CLASS="OPTION" >--analyze</TT > option. </P ><DIV CLASS="TIP" ><BLOCKQUOTE CLASS="TIP" ><P ><B >Tip: </B > If you specify columns, you probably have to escape the parentheses from the shell. (See examples below.) </P ></BLOCKQUOTE ></DIV ></DD ><DT ><TT CLASS="OPTION" >-v</TT ><BR><TT CLASS="OPTION" >--verbose</TT ></DT ><DD ><P > Print detailed information during processing. </P ></DD ><DT ><TT CLASS="OPTION" >-z</TT ><BR><TT CLASS="OPTION" >--analyze</TT ></DT ><DD ><P > Calculate statistics for use by the optimizer. </P ></DD ></DL ></DIV ><P> </P ><P > <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > also accepts the following command-line arguments for connection parameters: <P ></P ></P><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="OPTION" >-h <TT CLASS="REPLACEABLE" ><I >host</I ></TT ></TT ><BR><TT CLASS="OPTION" >--host <TT CLASS="REPLACEABLE" ><I >host</I ></TT ></TT ></DT ><DD ><P > Specifies the host name of the machine on which the server is running. If the value begins with a slash, it is used as the directory for the Unix domain socket. </P ></DD ><DT ><TT CLASS="OPTION" >-p <TT CLASS="REPLACEABLE" ><I >port</I ></TT ></TT ><BR><TT CLASS="OPTION" >--port <TT CLASS="REPLACEABLE" ><I >port</I ></TT ></TT ></DT ><DD ><P > Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections. </P ></DD ><DT ><TT CLASS="OPTION" >-U <TT CLASS="REPLACEABLE" ><I >username</I ></TT ></TT ><BR><TT CLASS="OPTION" >--username <TT CLASS="REPLACEABLE" ><I >username</I ></TT ></TT ></DT ><DD ><P > User name to connect as </P ></DD ><DT ><TT CLASS="OPTION" >-W</TT ><BR><TT CLASS="OPTION" >--password</TT ></DT ><DD ><P > Force password prompt. </P ></DD ></DL ></DIV ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50208" ></A ><H2 >Environment</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="ENVAR" >PGDATABASE</TT ><BR><TT CLASS="ENVAR" >PGHOST</TT ><BR><TT CLASS="ENVAR" >PGPORT</TT ><BR><TT CLASS="ENVAR" >PGUSER</TT ></DT ><DD ><P > Default connection parameters </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50222" ></A ><H2 >Diagnostics</H2 ><P > In case of difficulty, see <A HREF="sql-vacuum.html" ><I >VACUUM</I ></A > and <A HREF="app-psql.html" ><SPAN CLASS="APPLICATION" >psql</SPAN ></A > for discussions of potential problems and error messages. The database server must be running at the targeted host. Also, any default connection settings and environment variables used by the <SPAN CLASS="APPLICATION" >libpq</SPAN > front-end library will apply. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50228" ></A ><H2 >Notes</H2 ><P > <SPAN CLASS="APPLICATION" >vacuumdb</SPAN > might need to connect several times to the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > server, asking for a password each time. It is convenient to have a <TT CLASS="FILENAME" >~/.pgpass</TT > file in such cases. See <A HREF="libpq-pgpass.html" >Section 27.12</A > for more information. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50235" ></A ><H2 >Examples</H2 ><P > To clean the database <TT CLASS="LITERAL" >test</TT >: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$ </SAMP ><KBD CLASS="USERINPUT" >vacuumdb test</KBD ></PRE ><P> </P ><P > To clean and analyze for the optimizer a database named <TT CLASS="LITERAL" >bigdb</TT >: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$ </SAMP ><KBD CLASS="USERINPUT" >vacuumdb --analyze bigdb</KBD ></PRE ><P> </P ><P > To clean a single table <TT CLASS="LITERAL" >foo</TT > in a database named <TT CLASS="LITERAL" >xyzzy</TT >, and analyze a single column <TT CLASS="LITERAL" >bar</TT > of the table for the optimizer: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$ </SAMP ><KBD CLASS="USERINPUT" >vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy</KBD ></PRE ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN50254" ></A ><H2 >See Also</H2 ><A HREF="sql-vacuum.html" ><I >VACUUM</I ></A ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="app-psql.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="reference-server.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><SPAN CLASS="APPLICATION" >psql</SPAN ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="reference-client.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >PostgreSQL Server Applications</TD ></TR ></TABLE ></DIV ></BODY ></HTML >