Re: Speedup twophase transactions
Nikhil Sontakke <nikhils@2ndquadrant.com>
From: Nikhil Sontakke <nikhils@2ndquadrant.com>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: David Steele <david@pgmasters.net>,
Stas Kelvich <s.kelvich@postgrespro.ru>, Simon Riggs <simon@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>,
Jesper Pedersen <jesper.pedersen@redhat.com>, Robert Haas <robertmhaas@gmail.com>
Date: 2017-03-16T10:18:18Z
Lists: pgsql-hackers
> > + * * RecoverPreparedTransactions(), StandbyRecoverPreparedTransact > ions() > + * and PrescanPreparedTransactions() have been modified to go > throug > + * gxact->inredo entries that have not made to disk yet. > > It seems to me that there should be an initial scan of pg_twophase at > the beginning of recovery, discarding on the way with a WARNING > entries that are older than the checkpoint redo horizon. This should > fill in shmem entries using something close to PrepareRedoAdd(), and > mark those entries as inredo. Then, at the end of recovery, > PrescanPreparedTransactions does not need to look at the entries in > pg_twophase. And that's the case as well of > RecoverPreparedTransaction(). I think that you could get the patch > much simplified this way, as any 2PC data can be fetched directly from > WAL segments and there is no need to rely on scans of pg_twophase, > this is replaced by scans of entries in TwoPhaseState. > > I don't think this will work. We cannot replace pg_twophase with shmem entries + WAL pointers. This is because we cannot expect to have WAL entries around for long running prepared queries which survive across checkpoints. Regards, Nikhils
Commits
-
Speedup 2PC recovery by skipping two phase state files in normal path
- 728bd991c3c4 10.0 landed
-
Add tests for two-phase commit
- 30820982b295 10.0 landed
-
Improve grammar of message about two-phase state files.
- 38c363adf497 10.0 landed
-
Speedup 2PC by skipping two phase state files in normal path
- 978b2f65aa12 9.6.0 cited