Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.4(EOL), 10.5, 10.6, 10.11, 11.4
Description
In the function btr_blob_free() there is an unnecessary lookup of buf_pool.page_hash. If we acquired an additional buffer-fix on the page before mtr_t::commit() and released it after acquiring buf_pool.mutex, we would know that the page still exists in the buffer pool and can be attempted to be freed, without having to look it up in buf_pool.page_hash again.
There could be similar suboptimal patterns elsewhere as well.
Attachments
Issue Links
- relates to
-
MDEV-33966 sysbench performance regression with concurrent workloads
-
- Stalled
-
-
MDEV-34791 Redundant page lookups hurt performance
-
- Closed
-
Apart from btr_blob_free(), I found some avoidable look-ups for an index root page and duplicated error handling in dict_load_table_one(). Furthermore, trx_t::apply_log() could do without a mini-transaction, just invoking the recently added buf_pool.page_fix() to access the undo log pages that are in the exclusive ownership of the active transaction.