Dear All,
Consider, please, my patch for async commit for twophase transactions. It can be applicable when catchup performance is not enought with publication parameter twophase = on.
The key changes are:
- Use XLogSetAsyncXactLSN instead of XLogFlush as it is for usual transactions.
- In case of async commit only, save 2PC state in the pg_twophase file (but not fsync it) in addition to saving in the WAL. The file is used as an alternative to storing 2pc state in the memory.
- On recovery, reject pg_twophase files with future xids.
Probably, 2PC async commit should be enabled by a GUC (not implemented in the patch).
With best regards,
Vitaly