Re: Improving connection scalability: GetSnapshotData()
Ian Barwick <ian.barwick@2ndquadrant.com>
On 2020/09/08 13:11, Andres Freund wrote: > Hi, > > On 2020-09-08 13:03:01 +0900, Ian Barwick wrote: (...) >> I wonder if it's possible to increment "xactCompletionCount" >> during replay along these lines: >> >> *** a/src/backend/access/transam/xact.c >> --- b/src/backend/access/transam/xact.c >> *************** xact_redo_commit(xl_xact_parsed_commit * >> *** 5915,5920 **** >> --- 5915,5924 ---- >> */ >> if (XactCompletionApplyFeedback(parsed->xinfo)) >> XLogRequestWalReceiverReply(); >> + >> + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); >> + ShmemVariableCache->xactCompletionCount++; >> + LWLockRelease(ProcArrayLock); >> } >> >> which seems to work (though quite possibly I've overlooked something I don't >> know that I don't know about and it will all break horribly somewhere, >> etc. etc.). > > We'd also need the same in a few more places. Probably worth looking at > the list where we increment it on the primary (particularly we need to > also increment it for aborts, and 2pc commit/aborts). Yup. > At first I was very confused as to why none of the existing tests have > found this significant issue. But after thinking about it for a minute > that's because they all use psql, and largely separate psql invocations > for each query :(. Which means that there's no cached snapshot around... > > Do you want to try to write a patch? Sure, I'll give it a go as I have some time right now. Regards Ian Barwick -- Ian Barwick https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
-
Try to unbreak 021_row_visibility.pl on mingw.
- 1df2b50dbebb 14.0 landed
-
Fix and test snapshot behavior on standby.
- 7b28913bcab8 14.0 landed
-
Fix race condition in snapshot caching when 2PC is used.
- 07f32fcd23ac 14.0 cited
-
snapshot scalability: cache snapshots using a xact completion counter.
- 623a9ba79bbd 14.0 landed
-
Fix use of wrong index in ComputeXidHorizons().
- f6661d3df228 14.0 landed
-
Make vacuum a bit more verbose to debug BF failure.
- 49967da65aec 14.0 landed
-
snapshot scalability: Introduce dense array of in-progress xids.
- 941697c3c1ae 14.0 landed
-
snapshot scalability: Move PGXACT->vacuumFlags to ProcGlobal->vacuumFlags.
- 5788e258bb26 14.0 landed
-
snapshot scalability: Move subxact info to ProcGlobal, remove PGXACT.
- 73487a60fc10 14.0 landed
-
snapshot scalability: Move PGXACT->xmin back to PGPROC.
- 1f51c17c68d0 14.0 landed
-
snapshot scalability: Don't compute global horizons while building snapshots.
- dc7420c2c927 14.0 landed
-
BRIN: Handle concurrent desummarization properly
- 1f42d35a1d61 14.0 cited
-
Track latest completed xid as a FullTransactionId.
- 3bd7f9969a24 14.0 landed
-
Rename VariableCacheData.nextFullXid to nextXid.
- fea10a64340e 14.0 landed
-
snapshot scalability: Move delayChkpt from PGXACT to PGPROC.
- 75848bc74411 13.0 landed
-
Report progress of CREATE INDEX operations
- ab0dfc961b6a 12.0 cited