mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
snapshot scalability: Move PGXACT->vacuumFlags to ProcGlobal->vacuumFlags.
Similar to the previous commit this increases the chance that data frequently needed by GetSnapshotData() stays in l2 cache. As we now take care to not unnecessarily write to ProcGlobal->vacuumFlags, there should be very few modifications to the ProcGlobal->vacuumFlags array. Author: Andres Freund <andres@anarazel.de> Reviewed-By: Robert Haas <robertmhaas@gmail.com> Reviewed-By: Thomas Munro <thomas.munro@gmail.com> Reviewed-By: David Rowley <dgrowleyml@gmail.com> Discussion: https://postgr.es/m/20200301083601.ews6hz5dduc3w2se@alap3.anarazel.de
This commit is contained in:
@@ -181,7 +181,8 @@ StartupDecodingContext(List *output_plugin_options,
|
||||
if (!IsTransactionOrTransactionBlock())
|
||||
{
|
||||
LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
|
||||
MyPgXact->vacuumFlags |= PROC_IN_LOGICAL_DECODING;
|
||||
MyProc->vacuumFlags |= PROC_IN_LOGICAL_DECODING;
|
||||
ProcGlobal->vacuumFlags[MyProc->pgxactoff] = MyProc->vacuumFlags;
|
||||
LWLockRelease(ProcArrayLock);
|
||||
}
|
||||
|
||||
|
@@ -520,7 +520,8 @@ ReplicationSlotRelease(void)
|
||||
|
||||
/* might not have been set when we've been a plain slot */
|
||||
LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
|
||||
MyPgXact->vacuumFlags &= ~PROC_IN_LOGICAL_DECODING;
|
||||
MyProc->vacuumFlags &= ~PROC_IN_LOGICAL_DECODING;
|
||||
ProcGlobal->vacuumFlags[MyProc->pgxactoff] = MyProc->vacuumFlags;
|
||||
LWLockRelease(ProcArrayLock);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user