I'm puzzled by the innodb_max_dirty_pages_pct
parameter, and its relation to the redo log.
The definition itself is simple:
InnoDB tries to flush data from the buffer pool so that the percentage of dirty pages does not exceed this value.
However, what confuses me is the relationship with the redo log.
Does "flush data" mean:
- copy dirty pages from the log buffer to the redo log, or
- from the redo log to the buffer pool file?
I can't imagine how case 1 can happen. Even in systems with innodb_flush_log_at_trx_commit = 0
, logs are flushed one per second, so how can 90% of the buffer pool be changed in one second?
If the case is 2 instead (and this interpretation would be, I guess, (checkpoint age > total log size * pct), such high number of dirty pages don't fit in the redo log.
What am I misunderstanding?