On Wed, Nov 23, 2011 at 7:57 PM, Robert Haas <robertmh...@gmail.com> wrote: > On Wed, Nov 23, 2011 at 1:30 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >> What I think might make more sense is to keep two variables, >> RecentGlobalXmin with its current meaning and RecentDatabaseWideXmin >> which considers only xmins of transactions in the current database. >> Then HOT cleanup could select the appropriate cutoff depending on >> whether it's working on a shared or non-shared relation. > > Unfortunately, that would have the effect of lengthening the time for > which ProcArrayLock is held, and as benchmark results from Pavan's > patch in that area show, that makes a very big difference to total > throughput on write-heavy workloads.
Agreed. The performance effect of doing that would be noticeable, and I quickly ruled out that solution without even mentioning it at version one. > On a related note, Simon's > proposed change here would also complicate things for that patch, > because databaseId would have to become part of PGXACT rather than > PGPROC, and that would make the PGXACT act array larger That is correct. > and thus > slower to scan. I have deep respect for the perils of not doing HOT > cleanup quickly enough, but ProcArrayLock contention is nothing to > sneeze at either. If you measure the difference we'll be able to see what difference adding 4 bytes onto every pgtran makes. I think it will be small. OTOH, the effect of database bloat is well documented and has a seriously negative effect on performance that easily outweighs the slight loss. -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers