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
Defer change buffer merge until pages are requested
Remove dummy tablespace for the redo log
Assertion 'space->free_limit == 0 || space->free_limit == free_limit'
AliSQL: [Perf] Issue#23 MERGE INNODB AIO REQUEST
Avoid writes of freed (garbage) pages to InnoDB temporary tablespace
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
Execute InnoDB crash recovery in the background
Engine transaction recovery through persistent binlog
Remove multiple InnoDB buffer pool instances
FOSDEM 2019: PostgreSQL vs. fsync
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