• Simon Riggs's avatar
    Improve performance of replay of AccessExclusiveLocks · 9b013dc2
    Simon Riggs authored
    A hot standby replica keeps a list of Access Exclusive locks for a top
    level transaction. These locks are released when the top level transaction
    ends. Searching of this list is O(N^2), and each transaction had to pay the
    price of searching this list for locks, even if it didn't take any AE
    locks itself.
    
    This patch optimizes this case by having the master server track which
    transactions took AE locks, and passes that along to the standby server in
    the commit/abort record. This allows the standby to only try to release
    locks for transactions which actually took any, avoiding the majority of
    the performance issue.
    
    Refactor MyXactAccessedTempRel into MyXactFlags to allow minimal additional
    cruft with this.
    
    Analysis and initial patch by David Rowley
    Author: David Rowley and Simon Riggs
    9b013dc2
standby.c 34.8 KB