• Michael Paquier's avatar
    Reduce relcache access in WAL sender streaming logical changes · 5ddfebde
    Michael Paquier authored
    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 83fd4532.
    
    Author: Hou Zhijie
    Reviewed-by: Kyotaro Horiguchi, Euler Taveira
    Discussion: https://postgr.es/m/OS0PR01MB5716E863AA9E591C1F010F7A947D9@OS0PR01MB5716.jpnprd01.prod.outlook.com
    Backpatch-through: 13
    5ddfebde
pgoutput.c 35.6 KB