On Wed, Oct 29, 2008 at 4:46 PM, Matthew T. O'Connor <matthew@xxxxxxxx> wrote:
Noah Freire wrote:What version of PostgreSQL?
<2008-10-29 11:09:03.453 PDT>DEBUG: 00000: accounts: vac: 16697969 (threshold 6000050), anl: 16697969 (threshold 120000048)
<2008-10-29 11:09:05.610 PDT>DEBUG: 00000: accounts: vac: 16699578 (threshold 6000050), anl: 16699578 (threshold 120000048)
<2008-10-29 11:10:03.563 PDT>DEBUG: 00000: accounts: vac: 16735906 (threshold 6000050), anl: 16735906 (threshold 120000048)
please check the first log message: the vacuum threshold is 6,000,050 rows and the number of dead tuples is 16,697,969. Even though the number of dead_tuples is greater than the threshold the autovacuum is not being triggered for this table. So, besides this condition (dead_tuples > threshold) what else is taken into account by autovacuum?
8.3
Is the table being excluded? (see the pg_autovacuum system table settings)
there's an entry for this table on pg_autovacuum, and it's enabled.
Are you sure that it's not getting processed? Perhaps one worker is / has been churning on this table for a *LONG* time (that is a fairly big table).
Right. I was wrong :-) the table is being processed by autovacuum (I checked via pg_stat_activity). However, as you pinpointed, it's already running for hours (the test workload ended hours ago, basically it is just this autovacuum worker running on the system).
Is there a way to make a more aggressive autovacuum setting for this table? it does not matter if it will affect performance, my concern is that it finishes as soon as possible. I wonder if a manual vacuum wouldn't be faster.
Thanks,
-Noah