mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Reduce relcache access in WAL sender streaming logical changes
get_rel_sync_entry(), which is called each time a change needs to be logically replicated, is a rather hot code path in the WAL sender sending logical changes. This code path was doing a relcache access on relkind and relpartition for each logical change, but we only need to know this information when building or re-building the cached information for a relation. Some measurements prove that this is noticeable in perf profiles, particularly when attempting to replicate changes from relations that are not published as these cause less overhead in the WAL sender, delaying further the replication of changes for relations that are published. Issue introduced in 83fd453. Author: Hou Zhijie Reviewed-by: Kyotaro Horiguchi, Euler Taveira Discussion: https://postgr.es/m/OS0PR01MB5716E863AA9E591C1F010F7A947D9@OS0PR01MB5716.jpnprd01.prod.outlook.com Backpatch-through: 13
This commit is contained in:
		
							parent
							
								
									913a03ec29
								
							
						
					
					
						commit
						6ce16088bf
					
				| @ -1119,8 +1119,6 @@ static RelationSyncEntry * | ||||
| get_rel_sync_entry(PGOutputData *data, Oid relid) | ||||
| { | ||||
| 	RelationSyncEntry *entry; | ||||
| 	bool		am_partition = get_rel_relispartition(relid); | ||||
| 	char		relkind = get_rel_relkind(relid); | ||||
| 	bool		found; | ||||
| 	MemoryContext oldctx; | ||||
| 
 | ||||
| @ -1160,6 +1158,8 @@ get_rel_sync_entry(PGOutputData *data, Oid relid) | ||||
| 		List	   *schemaPubids = GetSchemaPublications(schemaId); | ||||
| 		ListCell   *lc; | ||||
| 		Oid			publish_as_relid = relid; | ||||
| 		bool		am_partition = get_rel_relispartition(relid); | ||||
| 		char		relkind = get_rel_relkind(relid); | ||||
| 
 | ||||
| 		/* Reload publications if needed before use. */ | ||||
| 		if (!publications_valid) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user