[MDEV-25948] Remove log_flush_task Created: 2021-06-17  Updated: 2022-11-02  Resolved: 2021-06-23

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.5.7, 10.5.8, 10.5.9, 10.5.10, 10.6.0, 10.6.1, 10.6.2
Fix Version/s: 10.5.12, 10.6.3

Type: Bug Priority: Major
Reporter: Marko Mäkelä Assignee: Marko Mäkelä
Resolution: Fixed Votes: 0
Labels: performance

Issue Links:
Blocks
blocks MDEV-25954 Remove superfluous os_aio_wait_until_... Closed
Problem/Incident
is caused by MDEV-23855 InnoDB log checkpointing causes regre... Closed
Relates
relates to MDEV-25611 RESET MASTER still causes the server ... Stalled

 Description   

In MDEV-23855, I introduced a log_flush_task with the reasoning that invoking a single large log write for every page write batch could be faster than invoking log_write_up_to() for every individual page that is to be written.

wlad pointed out that the wait for the task could actually reduce performance. Quick benchmarks suggest that removing the log_flush_task could slightly improve performance in the typical case. (In a pathological worst case, I suspect that it could reduce performance, but I suppose that such cases are unlikely.)

When the doublewrite buffer is being used, we can write potentially "future" pages to it. Only before writing pages to the final location we must not adhere to the write-ahead-logging protocol. Thus, in many cases, a log write could meanwhile have happened for other reasons (such as making a transaction commit durable) before we actually get to the final write of the page.


Generated at Thu Feb 08 09:41:36 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.