In normal
PostgreSQL operation, an UPDATE or
DELETE of a row does not immediately remove the old tuple>
(version of the row). This approach is necessary to gain the benefits
- of multiversion concurrency control (see the User's Guide): the tuple
- must not be deleted while
+ of multiversion concurrency control (see the User's Guide>):
+ the tuple must not be deleted while
it is still potentially visible to other transactions. But eventually,
an outdated or deleted tuple is no longer of interest to any transaction.
The space it occupies must be reclaimed for reuse by new tuples, to avoid
just after making major changes in the contents of a table. Accurate
statistics will help the planner to choose the most appropriate query
plan, and thereby improve the speed of query processing. A common
- strategy is to run <command>VACUUM and ANALYZE>
- once a day during a low-usage time of day.
+ strategy is to run <xref linkend="sql-vacuum" endterm="sql-vacuum-title">
+ and ANALYZE once a day during a low-usage time of day.
- Unlike <xref linkend="sql-vacuum" endterm="sql-vacuum-title">,
+ Unlike <command>VACUUM FULL>,
ANALYZE requires
only a read lock on the target table, so it can run in parallel with
other activity on the table.
intended usage is in connection with preparation of user-defined template
databases, or other databases that are completely read-only and will not
receive routine maintenance VACUUM> operations.
- See
- for details.
+ See the Administrator's Guide> for details.
We recommend that active production databases be
VACUUM-ed frequently (at least nightly), in order to
- remove expired rows. After copying a large table into
-
Postgres or after deleting a large number
+ remove expired rows. After adding or deleting a large number
of records, it may be a good idea to issue a VACUUM
ANALYZE command for the affected table. This will update the
system catalogs with
regression=> VACUUM VERBOSE ANALYZE onek;
NOTICE: --Relation onek--
-NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0;
- Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188;
- Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74.
- Elapsed 0/0 sec.
-NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
-NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
-NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
-NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
-NOTICE: Rel onek: Pages: 98 --> 25; Tuple(s) moved: 1000. Elapsed 0/1 sec.
-NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
-NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
-NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
-NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
+NOTICE: Index onek_unique1: Pages 14; Tuples 1000: Deleted 3000.
+ CPU 0.00s/0.11u sec elapsed 0.12 sec.
+NOTICE: Index onek_unique2: Pages 16; Tuples 1000: Deleted 3000.
+ CPU 0.00s/0.10u sec elapsed 0.10 sec.
+NOTICE: Index onek_hundred: Pages 13; Tuples 1000: Deleted 3000.
+ CPU 0.00s/0.10u sec elapsed 0.10 sec.
+NOTICE: Index onek_stringu1: Pages 31; Tuples 1000: Deleted 3000.
+ CPU 0.01s/0.09u sec elapsed 0.10 sec.
+NOTICE: Removed 3000 tuples in 70 pages.
+ CPU 0.02s/0.04u sec elapsed 0.07 sec.
+NOTICE: Pages 94: Changed 0, Empty 0; Tup 1000: Vac 3000, Keep 0, UnUsed 0.
+ Total CPU 0.05s/0.45u sec elapsed 0.59 sec.
+NOTICE: Analyzing onek
VACUUM