Maintaining a Database
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,
vacuumdb. They each perform the same two general functions:
Remove any leftover data from rollbacks and other processes that can leave temporary data
Analyze activity in the database to assist PostgreSQL in designing efficient queries
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.
Note
The VACUUM
command ...
Get Practical PostgreSQL now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.