Lately I have been paranoid about the possibility of transaction wrap around failure due to a potential orphaned toast table. I have yet to prove that I have such an object in my database.. but I am running Postgres 8.3 with auto_vacuum enabled and am doing nightly manual vacuums as well and cannot explain the results of this query. Any assistance is greatly appreciated.
Yesterday I ran:
production=# select datname, age(datfrozenxid) from pg_database;
datname | age
------------+-----------
template1 | 100260769
template0 | 35997820
postgres | 100319291
stage | 100263734
production | 100319291
and today after the nightly vacuum ran I got this:
production=# select datname, age(datfrozenxid) from pg_database; datname | age ------------+----------- template1 | 100677381 template0 | 37594611 postgres | 100738854 stage | 100680248 production | 100738770
Am I just counting down to 2,000,000,000 and the postgresapocolypse? Is there a way for me to determine what the actual transaction threshold is going to be? I've read the postgresql docs and greg smiths section in high performance and have to admit i am having difficulty understanding how this number is not retreating after a database manual vacuum.