Heikki Linnakangas wrote: > Simon Riggs wrote: >> Subtransactions cause a couple of problems for Hot Standby: > > Do we need to treat subtransactions any differently from normal > transactions? Just treat all subtransactions as top-level transactions > until commit, and mark them all as committed when you see the commit > record for the top-level transaction.
This could lead to inconsistent results -- some of the subtransactions could be marked as committed while others are still in progress. Unless we want to be able to atomically mark them all as committed, but I don't think that's really an option because it could mean holding the clog lock for a long time, possibly involving I/O of clog pages. >> Right now we lock and unlock the clog for each committed subtransaction >> at commit time, which is wasteful. A better scheme: >> pre-scan the list of xids to derive list of pages >> if we have just a single page to update >> { >> update all entries on page in one action >> } >> else >> { >> loop thru xids marking them all as subcommitted >> mark top level transaction committed >> loop thus xids again marking them all as committed >> } > Hmm, I don't see anything immediately wrong with that. Neither do I. I wonder if the improved clog API required to mark multiple transactions as committed at once would be also useful to TransactionIdCommitTree which is used in regular transaction commit. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers