Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL), 10.3(EOL), 10.4(EOL), 10.5, 10.6, 10.7(EOL), 10.8(EOL), 10.9(EOL), 10.10(EOL), 10.11, 11.0(EOL), 11.1(EOL), 11.2(EOL), 11.3(EOL), 11.4
Description
The class buf::Block_hint that was added in order to fix MDEV-23693 is an unnecessary performance hog that causes unnecessary lookups on buf_pool.page_hash.
Originally, I was thinking that this function could be removed as part of rewriting the buffer pool resizing in MDEV-29445, but it turns out that we can do it independently of that. We only need to add a field btr_pcur_t::old_page_id to remember the page identifier where the persistent cursor position was stored, and pass this identifier to buf_page_optimistic_get(), which will have to perform a buf_pool.page_hash lookup anyway.
Furthermore, in btr_pcur_optimistic_latch_leaves() we had better look up the current page normally, and perform some tricks to prevent a deadlock when acquiring a latch on the previous page, if needed. This will also allow us to simplify the function btr_pcur_move_backward_from_page().
Attachments
Issue Links
- causes
-
MDEV-33946 mariadb-backup --prepare: Frequent [ERROR] InnoDB: OPT_PAGE_CHECKSUM mismatch on
- Closed
- relates to
-
MDEV-33764 InnoDB: Failing assertion: err == DB_SUCCESS in btr0cur.cc line 4272
- Open
-
MDEV-33819 The purge of committed history is mis-parsing some log
- Closed
-
MDEV-23693 Failing assertion: my_atomic_load32_explicit(&lock->lock_word, MY_MEMORY_ORDER_RELAXED) == X_LOCK_DECR
- Closed
-
MDEV-29445 reorganise innodb buffer pool (and remove buffer pool chunks)
- Stalled
-
MDEV-33208 InnoDB: Trying to access update undo rec field 50 in index `PRIMARY` of table NNN but index has only 14 fields
- Closed