mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user