MDEV-21423 - lock-free trx_sys get performance regression cause by lf_find and ut_delay#5043
MDEV-21423 - lock-free trx_sys get performance regression cause by lf_find and ut_delay#5043svoj wants to merge 1 commit intoMariaDB:mainfrom
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a new rw_trx_ids_t class to manage read-write transaction IDs and serialization numbers, moving them from the hash elements into a centralized vector within the transaction system. This involves significant updates to transaction registration, deregistration, and snapshotting logic across InnoDB. Feedback highlights a critical thread-safety issue where the ids vector is accessed without a read lock during potential reallocations, which could lead to memory corruption. Additionally, the use of memset to initialize a synchronization primitive was identified as unsafe and should be removed in favor of the standard initialization call.
…_find and ut_delay TBD
dr-m
left a comment
There was a problem hiding this comment.
This looks very promising. The reason why I won’t give an approval yet is that I didn’t review all details of this thoroughly, especially around startup and shutdown.
This needs to be tested, both for performance and stability. Please coordinate with the testers on this.
| /** trx_sys.rw_trx_ids index, protected by mutex */ | ||
| uint32_t rw_trx_ids_slot; |
There was a problem hiding this comment.
Is it really protected by trx_t::mutex as the comment claims, or by trx_sys.rw_trx_ids.latch?
TBD