Autovacuum integration patch

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Patches <pgsql-patches(at)postgresql(dot)org>
Subject: Autovacuum integration patch
Date: 2005-06-29 23:34:56
Message-ID: 20050629233456.GA24854@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches

Hackers,

(Resend, like fifth time or so. bzip2'ing the patch for luck.)

Here is a first cut at autovacuum integration. Please have a look at
it. Note that this patch automatically creates three new files:

src/backend/postmaster/autovacuum.c
src/include/catalog/pg_autovacuum.h
src/include/postmaster/autovacuum.h

Note that the daemon is not activated by default.

There are several things that are painfully evident with this thing on:

- TRUNCATE does not update stats. It should send a stat message to
which we can react.

- If you empty a whole table using DELETE just after an
automatically-issued VACUUM takes place, the new threshold may not be
enough to trigger a new VACUUM. Thus you end up with a bloated table,
and it won't get vacuumed until it grows again. This may be a problem
with the cost equations, but those are AFAICT identical to those of
pg_autovacuum, so we may need to rethink the equations.

- The default value of on for reset stats on server start is going to be
painful with autovacuum, because it reacts badly to losing the info.

- We should make VACUUM and ANALYZE update the pg_autovacuum relation,
in order to make the autovacuum daemon behave sanely with manually
issued VACUUM/ANALYZE.

- Having an autovacuum process running on a database can be surprising
if you want to drop a database, or create a new one using it as a
template. This happenned to me several times.

- The shutdown sequence is not debugged nor very well tested. It may be
all wrong.

- The startup sequence is a mixture from pgarch, normal backend and
pgstat. I find it relatively clean but I can't swear it's bug-free.

- There are no docs

- There are no ALTER TABLE commands to change the pg_autovacuum
attributes for a table. (Enable/disable, set thresholds and scaling
factor)

- I compiled with -DEXEC_BACKEND, but I didn't look to see if it
actually worked on that case.

Apart from all these issues, it is completely functional :-) It can
survive several "make installcheck" runs without problem, and the
regression database is vacuumed/analyzed as it runs.

Some of these issues are trivial to handle. However I'd like to release
this right now, so I can go back to "shared dependencies" now that role
support is in.

Barring any objections I think this should be integrated, so these
issues can be tackled by interested parties.

--
Alvaro Herrera (<alvherre[a]surnet.cl>)
"World domination is proceeding according to plan" (Andrew Morton)

Attachment Content-Type Size
autovacuum-4.patch.bz2 application/octet-stream 15.3 KB

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Neil Conway 2005-06-30 02:00:25 Re: libpq: fix unlikely memory leak
Previous Message Satoshi Nagayasu 2005-06-29 23:14:30 Re: Open items