MDEV-33668: More efficient XA dependency tracking in SQL driver thread
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:
Kristian Nielsen <knielsen@knielsen-hq.org>
Showing
This diff is collapsed.
Please register or sign in to comment