Index: catalogs.sgml =================================================================== RCS file: /home/alvherre/cvs/pgsql/doc/src/sgml/catalogs.sgml,v retrieving revision 2.113 diff -c -r2.113 catalogs.sgml *** catalogs.sgml 8 Sep 2005 20:07:41 -0000 2.113 --- catalogs.sgml 12 Sep 2005 13:56:35 -0000 *************** *** 1137,1145 **** pg_autovacuum The catalog pg_autovacuum stores optional ! per-relation configuration parameters for autovacuum. If there is an entry here for a particular relation, the given parameters will be used for autovacuuming that table. If no entry is present, the system-wide defaults will be used. --- 1137,1150 ---- pg_autovacuum + + autovacuum + table-specific configuration + + The catalog pg_autovacuum stores optional ! per-relation configuration parameters for . If there is an entry here for a particular relation, the given parameters will be used for autovacuuming that table. If no entry is present, the system-wide defaults will be used. Index: maintenance.sgml =================================================================== RCS file: /home/alvherre/cvs/pgsql/doc/src/sgml/maintenance.sgml,v retrieving revision 1.45 diff -c -r1.45 maintenance.sgml *** maintenance.sgml 22 Jun 2005 21:14:28 -0000 1.45 --- maintenance.sgml 12 Sep 2005 14:10:17 -0000 *************** *** 99,104 **** --- 99,110 ---- . + + An automated mechanism for performing the necessary VACUUM + operations has been added in PostgreSQL 8.1. + See . + + Recovering disk space *************** *** 177,189 **** the program vacuumdb may be helpful. - - - The contrib/pg_autovacuum program can be useful for - automating high-frequency vacuuming operations. - - - VACUUM FULL is recommended for cases where you know you have deleted the majority of rows in a table, so that the --- 183,188 ---- *************** *** 456,461 **** --- 455,551 ---- + + + The Auto-Vacuum Daemon + + + autovacuum + general information + + + Beginning in PostgreSQL 8.1, there is a + separate optional server process called the autovacuum + daemon, whose purpose is to automate the issuance of + VACUUM and ANALYZE commands. + When enabled, the autovacuum daemon runs periodically and checks for + tables that have had a large number of inserted, updated or deleted + tuples. These checks use the row-level statistics collection facility; + therefore, the autovacuum daemon cannot be used unless and are set true. Also, it's + important to allow a slot for the autovacuum process when choosing the + value of . + + + + The autovacuum daemon, when enabled, runs every 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 itself is chosen. In this mode, each table in + the database is checked for new and obsolete tuples, according to the + applicable autovacuum parameters. If a + pg_autovacuum tuple is found for this + table, these settings are applied; otherwise the global values in + postgresql.conf are used. See + for more details on the global settings. Note that the autovacuum + daemon can be instructed to skip particular tables, by setting the + pg_autovacuum.enabled field to false. + + + + For each table, two conditions are used to determine which operation to + apply. If the number of obsolete tuples since the last + VACUUM exceeds the vacuum threshold, the + table is vacuumed and analyzed. The vacuum threshold is defined as: + + vacuum threshold = vacuum base threshold + vacuum scale factor * number of tuples + + where the vacuum base threshold is + pg_autovacuum.vac_base_thresh, + the vacuum scale factor is + pg_autovacuum.vac_scale_factor + and the number of tuples is + pg_class.reltuples. + The number of obsolete tuples is taken from the statistics + collector, which is a semi-accurate count updated by each + UPDATE and DELETE operation. (It + is only semi-accurate because some information may be lost under heavy + load.) For analyze, a similar condition is used: the threshold, calculated + by an equivalent equation to that above, is compared to the number of + new tuples, that is, those created by the INSERT and + COPY commands. + + + + Note that if any of the values in pg_autovacuum + is set to a negative number, or if a tuple is not present at all in + pg_autovacuum for any particular table, the + equivalent value from postgresql.conf is used. + + + + Additionally to the base threshold values and scale factors, there are + two parameters that can be set for each table in pg_autovacuum: + the vacuum cost delay + (pg_autovacuum.vac_cost_delay) + and the vacuum cost limit + (pg_autovacuum.vac_cost_limit). + They are used to set table-specific values for the + + feature. The above note about negative values also applies here, but + also note that if the postgresql.conf variables + autovacuum_vacuum_cost_limit and + autovacuum_vacuum_cost_delay are also set to negative + values, the vacuum_cost_limit and + vacuum_cost_delay values will be used instead. + + + Index: runtime.sgml =================================================================== RCS file: /home/alvherre/cvs/pgsql/doc/src/sgml/runtime.sgml,v retrieving revision 1.352 diff -c -r1.352 runtime.sgml *** runtime.sgml 30 Aug 2005 15:48:28 -0000 1.352 --- runtime.sgml 12 Sep 2005 13:55:25 -0000 *************** *** 3344,3361 **** Automatic Vacuuming ! Beginning in PostgreSQL 8.1, there is an optional server ! process called the autovacuum daemon, whose purpose is ! to automate the issuance of periodic VACUUM and ! ANALYZE commands. When enabled, the autovacuum daemon ! runs periodically and checks for tables that have had a large number ! of updated or deleted tuples. This check uses the row-level statistics ! collection facility; therefore, the autovacuum daemon cannot be used ! unless and ! are set TRUE. Also, it's ! important to allow a slot for the autovacuum process when choosing ! the value of . --- 3344,3358 ---- Automatic Vacuuming + + autovacuum + global configuration parameters + + ! These settings control the default behavior for the autovacuum ! daemon. Please refer to for ! more information. *************** *** 3470,3477 **** VACUUM operations. If -1 is specified (which is the default), the regular value will be used. - This setting can be overridden for individual tables by entries in - pg_autovacuum. --- 3467,3472 ---- *************** *** 3487,3494 **** VACUUM operations. If -1 is specified (which is the default), the regular value will be used. - This setting can be overridden for individual tables by entries in - pg_autovacuum. --- 3482,3487 ----