"At checkpoint time, all dirty data pages are flushed to disk and a special checkpoint record is written to the log file. (The change records were previously flushed to the WAL files.)"
I am confused by what the part in parenthesis means by "previously". This may only reflect my ignorance, but I don't know if "previously" means "in previous versions of Postgres" or "before the checkpoint" or something else.
Mostly because of this, I don't understand what this statement means. Thank you.
"previously" in that sentence means "earlier in time". The "WAL files" are written to during every COMMIT. They constitute a journal of changes that affected the in-memory "pages" and made them "dirty". During a checkpoint a marker entry is written that says a checkpoint has occurred and that every change noted in the WAL files written before the marker entry and now known to exist in the actual data files on disk.
Forgive me, but I don't quite follow this clause at it's not a complete sentence: "every change noted in the WAL files written before the marker entry and now known to exist in the actual data files on disk". Is there a typo here?
Until that happens some of those change may only exist in memory (in the form of dirty data pages).
David J.
I *think* I follow now: before the checkpoint, the dirty data pages had already been written to the WAL files, but not necessarily flushed to disk. The checkpoint flushes them all to disk as well.
If that is the case, I still think the wording is confusing and should be updated to say that ^^ more explicitly spelled out. For example:
At checkpoint time, all dirty data pages are flushed to disk and a special checkpoint record is written to the log file. (The change records were previously flushed only to the WAL files, not necessarily to disk).