• Kristian Nielsen's avatar
    MDEV-33668: More efficient XA dependency tracking in SQL driver thread · 6253f0dc
    Kristian Nielsen authored
    Avoid linear scan of all recently queued XIDs in the SQL driver thread,
    which might be expensive in XA-heavy workloads and large number of parallel
    replication worker threads.
    
    Instead keep a hash in the rpl_parallel_entry of where recently queued XIDs
    were scheduled. This allows direct lookup of any potential scheduling
    dependency.
    
    Keep a list in each scheduling bucket of recently queued XIDs, and purge the
    list (based on generations) when queueing next XA.
    
    Also implement a more fine-grained dependency check based on sub_id
    comparison. This can sometimes avoid a scheduling dependency that would
    otherwise look necessary based solely on the generation check.
    Signed-off-by: default avatarKristian Nielsen <knielsen@knielsen-hq.org>
    6253f0dc
rpl_parallel.cc 107 KB