I'm trying to make sense of Section 22.1.3 ("Preventing transaction ID wraparound failures") in the on-line docs to make sure the DB's autovacuum settings are adequate and are having an effect. The docs state: "The age column measures the number of transactions from the cutoff XID to the current transaction's XID." and: "With the standard freezing policy, the age column will start at one billion for a freshly-vacuumed database." I don't see numbers larger than 1 billion in my pg_database columns, though. Can anyone offer any information or pointers to a good on-line explanation of vacuuming? The database in question is doing about 3M inserts/day (in about 500K transactions/day) and has been up for a little more than 3 months. The database config: postgres@rs02:~$ egrep autovacuum /data02/pgsql/data/postgresql.conf autovacuum = on # enable autovacuum subprocess? autovacuum_naptime = 120 # time between autovacuum runs, in secs #autovacuum_vacuum_threshold = 1000 # min # of tuple updates before #autovacuum_analyze_threshold = 500 # min # of tuple updates before #autovacuum_vacuum_scale_factor = 0.4 # fraction of rel size before #autovacuum_analyze_scale_factor = 0.2 # fraction of rel size before #autovacuum_vacuum_cost_delay = -1 # default vacuum cost delay for #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for postgres@rs02:~$ /usr/local/pgsql/bin/psql reporting Welcome to psql 8.1.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit reporting=# select version() ; version ---------------------------------------------------------------------------------------------------------- PostgreSQL 8.1.3 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.0.2 20051125 (Red Hat 4.0.2-8) (1 row) reporting=# select datname, datvacuumxid, datfrozenxid from pg_database ; datname | datvacuumxid | datfrozenxid -----------+--------------+-------------- postgres | 499 | 499 reporting | 499 | 499 template1 | 499 | 499 template0 | 499 | 499 (4 rows) reporting=# SELECT datname, age(datfrozenxid) FROM pg_database ; datname | age -----------+---------- postgres | 27995112 reporting | 27995112 template1 | 27995112 template0 | 27995112 (4 rows)