The writing of modified InnoDB data pages to data files should be overhauled. See some of the comments in MDEV-15058.
Replace buf_block_t::mutex with more std::atomic
Execute InnoDB crash recovery in the background
Remove multiple InnoDB buffer pool instances
Remove dummy tablespace for the redo log
Defer change buffer merge until pages are requested
Defer writes to the InnoDB temporary tablespace
mariadb service won't shutdown when it's running and the OS datetime updated backwards
Assertion 'space->free_limit == 0 || space->free_limit == free_limit'
AliSQL: [Perf] Issue#23 MERGE INNODB AIO REQUEST
AliSQL: [Feature] Issue#19 BUFFER POOL LIST SCAN OPTIMIZATION
Avoid writes of freed (garbage) pages to InnoDB temporary tablespace
Punch holes when pages are freed
Error log flood : "InnoDB: page_cleaner: 1000ms intended loop took N ms. The settings might not be optimal."
[Note] InnoDB: page_cleaner: 1000ms intended loop took XXXXms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
InnoDB redo log format for better performance
Page compression - use smaller writes, avoid trimming/zeroing rest of the page if possible
Engine transaction recovery through persistent binlog
FOSDEM 2019: PostgreSQL vs. fsync
Historical - InnoDB IO Performance
MySQL Bug #94912 O_DIRECT_NO_FSYNC possible write hole
PostgreSQL's fsync() surprise
Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS