Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2(EOL), (14)
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)
-
- Closed
-
-
MDEV-33208 InnoDB: Trying to access update undo rec field 50 in index `PRIMARY` of table NNN but index has only 14 fields
-
- Closed
-
Activity
Transition | Time In Source Status | Execution Times |
---|
|
11s | 1 |
|
57m 37s | 1 |
|
2h | 2 |
|
30d 11h 36m | 2 |
|
5d 3h 29m | 1 |