I had written: > [snip] > > The problem is that attempts to vacuum these tables resulted in "NNN > dead row versions cannot be removed yet." Went through a lot of > analysis (e.g.: "Any hanging txns?") and trying different things with > folks on the #PostgreSQL IRC channel, all to no avail. [snip]
Okay, the mystery is *partially* solved. In IRC, when this was brought up again this morning due to my post to -hackers, two things happened: I did a vacuumdb on one of the tables and, much to my surprise, what wouldn't vacuum before I left work last nite *did* work this morning. And... JanniCash discovered this in utils/time/tqual.c (I believe): * OldestXmin is a cutoff XID (obtained from GetOldestXmin()). Tuples * deleted by XIDs >= OldestXmin are deemed "recently dead"; they might * still be visible to some open transaction, so we can't remove them, * even if we see that the deleting transaction has committed. So the next thing I did was run a bunch of updates, quit the script, then ran a while loop from the (Unix) command-line, trying to vacuum the one table every 30 seconds. To summarize... Fri Apr 2 08:54:54 EST 2004 INFO: "ethers": found 0 removable, 1834 nonremovable row versions in 93 pages DETAIL: 1466 dead row versions cannot be removed yet. ... Fri Apr 2 08:58:56 EST 2004 INFO: "ethers": found 1466 removable, 368 nonremovable row versions in 93 pages DETAIL: 0 dead row versions cannot be removed yet. Which is all well-and-good (tho, my ignorance readily conceded, four minutes seems a mite... long), *except*: If I shut-down the WebObjects application which, again, never accesses the db in question, much-less any of its tables, this "time-out" doesn't seem to apply. (I tried it.) Any explanation for this behaviour? Thanks, Jim -- Jim Seymour | PGP Public Key available at: [EMAIL PROTECTED] | http://www.uk.pgp.net/pgpnet/pks-commands.html http://jimsun.LinxNet.com | ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])