Database maintenance is a broad subject. This section covers the physical maintenance of the system (pertaining to its
disk usage), analytical maintenance (to increase performance), and database object documentation (to add to the
maintainability and clarity of the schema).
The primary tool for physical and analytical database maintenance in PostgreSQL is the
VACUUM SQL command, and its accompanying command-line script,
They each perform the same two general functions:
It is good practice to perform a VACUUM nightly on a production database. While it can
be run at the same time data is accessed, doing so will decrease the response time of the server. As such, it is generally preferable to
schedule it at a time when you do not expect a great deal of database activity.
Any time an exceptionally large number of records are added or deleted, it is prudent to perform a
VACUUM to analyze the database, which automatically updates the PostgreSQL query optimizer
of major changes to the tables. By doing this you allow PostgreSQL to have a more up-to-date profile of the data
within the database, providing a better set of information with which to plan the most efficient queries. All of these
actions should result in a faster, more efficient response from the database.
The VACUUM command locks tables in
access exclusive mode
means that any query involving a table being vacuumed will pause and wait until the vacuum of the affected table is
complete before continuing.