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: autovacuum-4.patch.bz2
Description: Binary data

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to