I just happened to be reading this page from
the 8.1 docs:
"The autovacuum daemon, when enabled, runs
every autovacuum_naptime seconds and
determines which database to process. Any database which is close to transaction
ID wraparound is immediately processed. In this case, autovacuum issues a
database-wide VACUUM call, or VACUUM
FREEZE if it's a template database, and then terminates. If no database
fulfills this criterion, the one that was least recently processed by autovacuum
is chosen. In this case each table in the selected database is checked, and
individual VACUUM or ANALYZE
commands are issued as needed."
-----Original Message-----PostgreSQL 8.1.3
From: pgsql-admin-owner@xxxxxxxxxxxxxx [mailto:pgsql-admin-owner@xxxxxxxxxxxxxx]On Behalf Of Chris Hoover
Sent: Tuesday, May 16, 2006 1:27 PM
To: pgsql-admin@xxxxxxxxxxxxxx
Subject: [ADMIN] Autovacuum Question
Question on autovacuum.
autovacuum_naptime (integer)
Specifies the delay between activity rounds for the autovacuum subprocess. In each round the subprocess examines one database and issues VACUUM and ANALYZE commands as needed for tables in that database. The delay is measured in seconds, and the default is 60. This option can be set at server start or in the postgresql.conf file.
Does this mean that each run of autovacuum will vacuum/analyze all tables that need work in the database that autovacuum is looking at?
The reason I'm asking is that I have ~172 non system tables in each database, so if autovacuum only does one table per run, I don't think it will ever get caught up (since there are almost 35k tables in total).
Also, with over 200 databases, does this mean that a database will only get checked once about every 3.5 hours, or does autovacuum run on the database that needs the vacuuming the most?
Thanks,
Chris