| At a high level, there are some things that coordinate when transactions happen in terms of WAL logging: 1. The Buffer Pool (memory for pages in the database) 2. The Log Manager 3. The Transaction Manager 4. The Storage Manager (read/write to disk) 5. Accessor Methods (interpret page bytes as e.g. Heap or BTree) This is abstract, not particular to Postgres, which doesn't have exact such names for all above things. Normally, when the Transaction Manager creates transactions that modify records/tuples (using the Accessor Methods) these actions need to be persisted via the Log Manager to the WAL. The pages of memory backing these records come from the Buffer Pool, and the Buffer Pool must also log certain actions. Before the Buffer Pool can flush any modified page to disk, the changes up to that page must have been persisted by the WAL via the Storage Manager as well. When you create unlogged tables, none of this happens, and when you modify records there's no trail. There's an attempt at tl;dr'ing WAL I am not an expert (Anarazel is) |