summaryrefslogtreecommitdiff
path: root/mysql-test/suite/wsrep
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-06-07 12:15:27 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-06-09 14:12:49 +0300
commitd61839c71e3e244909972a09f665097af416e87b (patch)
tree3486195b431511f5af8f6af5ffd18f725b34a692 /mysql-test/suite/wsrep
parentcf57fa8d879d3621122acd26bfa21b605be79064 (diff)
downloadmariadb-git-d61839c71e3e244909972a09f665097af416e87b.tar.gz
MDEV-28708 Increased congestion on buf_pool.flush_list_mutex
In commit f80deb9590775af44da200920ee9ac662e93205d (MDEV-27868) a fix for a correctness regression caused a performance regression by increasing the amount of work that is executed while holding buf_pool.flush_list_mutex. buf_page_t::set_temp_modified(): Relax an assertion, to allow an already dirty block to be marked as dirty. buf_page_t::flush_list_requests: Note that the variable is not always protected by buf_pool.flush_list_mutex. Already dirty blocks that are being written to will increment the counter without holding buf_pool.flush_list_mutex. mtr_t::process_freed_pages(): Handle pages that were freed during the execution of the mini-transaction. ReleaseUnlogged, mtr_t::release_unlogged(): Release modified pages when no log was written. This is for pages of the temporary tablespace, or for IMPORT TABLESPACE. ReleaseModified: Renamed from ReleaseBlocks. Assume that buf_pool.flush_list_mutex was acquired by the caller. ReleaseSimple: A combination of ReleaseLatches and ReleaseModified, for the case that for any modified pages, some earlier modifications are already waiting to be written. mtr_t::commit(): Invoke one of release_unlogged(), ReleaseModified, ReleaseSimple, ReleaseAll. Acquire and release buf_pool.flush_list_mutex at most once. memo_slot_release(): Simplify the code. mtr_t::sx_latch_at_savepoint(), mtr_t::x_latch_at_savepoint(): Reduce the size of the critical section. fil_space_t::update_last_freed_lsn(), fil_space_t::clear_freed_ranges(), fil_space_t::add_free_range(): Assume that freed_range_mutex is held by the caller. buf_pool_t::prepare_insert_into_flush_list(): Determine the insert position for buf_pool_t::insert_into_flush_list(). Remove any clean blocks from buf_pool.flush_list that were encountered while searching. buf_pool_t::insert_into_flush_list(): Insert the block at the predetermined position.
Diffstat (limited to 'mysql-test/suite/wsrep')
0 files changed, 0 insertions, 0 deletions