Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.5, 10.6, 10.11, 11.4
Description
The InnoDB hash table implementation defines the macros HASH_SEARCH, HASH_INSERT, and HASH_DELETE. Often, a HASH_SEARCH operation would already navigate to the correct hash bucket and to the correct position for a subsequent insert or delete operation. This effort will be wasted, because there is no way for HASH_INSERT or HASH_DELETE to refer to that position.
Similar to what was done to buf_pool.page_hash in MDEV-26826, we had better replace these macros with something more efficient, basically passing some kind of "iterator" from a search operation to the insert or delete operations.
Attachments
Issue Links
- relates to
-
MDEV-35247 ut_fold_ull() and ut_hash_ulint() are a waste
-
- Closed
-
-
MDEV-35484 InnoDB hash_table_t::array is not aligned to cache line size
-
- Open
-
-
MDEV-35049 fix innodb-adaptive-hash-index scalability with multiple threads
-
- Closed
-
-
MDEV-35189 Updating cache for INFORMATION_SCHEMA.INNODB_LOCKS et al is suboptimal
-
- Closed
-
I am done reviewing the current patch. The changes look functionally correct to me and the improvement points are good.
One not so good observation is that we are losing our grip on hash table abstraction with hash operations being directly coded when one is using a hash table. I think the key improvement points can be incorporated with a better hash table abstraction.