Clamp result of MultiXactMemberFreezeThreshold
The purpose of the function is to reduce the effective autovacuum_multixact_freeze_max_age if the multixact members SLRU is approaching wraparound, to make multixid freezing more aggressive. The returned value should therefore never be greater than plain autovacuum_multixact_freeze_max_age. Reviewed-by: Robert Haas Discussion: https://www.postgresql.org/message-id/85fb354c-f89f-4d47-b3a2-3cbd461c90a3@iki.fi Backpatch-through: 12, all supported versions
This commit is contained in:
parent
57625308f6
commit
b91b3f045a
@ -2828,6 +2828,7 @@ MultiXactMemberFreezeThreshold(void)
|
||||
uint32 multixacts;
|
||||
uint32 victim_multixacts;
|
||||
double fraction;
|
||||
int result;
|
||||
|
||||
/* If we can't determine member space utilization, assume the worst. */
|
||||
if (!ReadMultiXactCounts(&multixacts, &members))
|
||||
@ -2849,7 +2850,13 @@ MultiXactMemberFreezeThreshold(void)
|
||||
/* fraction could be > 1.0, but lowest possible freeze age is zero */
|
||||
if (victim_multixacts > multixacts)
|
||||
return 0;
|
||||
return multixacts - victim_multixacts;
|
||||
result = multixacts - victim_multixacts;
|
||||
|
||||
/*
|
||||
* Clamp to autovacuum_multixact_freeze_max_age, so that we never make
|
||||
* autovacuum less aggressive than it would otherwise be.
|
||||
*/
|
||||
return Min(result, autovacuum_multixact_freeze_max_age);
|
||||
}
|
||||
|
||||
typedef struct mxtruncinfo
|
||||
|
Loading…
x
Reference in New Issue
Block a user