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.

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
  }

All clog updates would be performed page-at-a-time, in ascending xid
order.

This seems likely to work well since many subtransactions will be on
same clog page as the top-level xid and the locking will often be more
efficient than the current case of repeated single lock acquisitions. It
also means we can skip RecordSubTransactionCommit() entirely,
significantly reducing clog contention.

Anybody see a problem there?

Hmm, I don't see anything immediately wrong with that.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to