full_page_writes
Writes full pages to WAL when first modified after a checkpoint.
How you change it
Reload, no restart
Defaults and ranges on this page were read from pg_settings on live PostgreSQL 18.4. Treat older majors as needing their own check before you copy a value.
A page write in process during an operating system crash might be only partially written to disk. During recovery, the row changes stored in WAL are not enough to recover. This option writes pages when first modified after a checkpoint to WAL so full recovery is possible.
What this means
When on (the default), PostgreSQL writes a full copy of each page to WAL the first time it changes after a checkpoint, protecting against torn pages if the OS/hardware writes a page partially during a crash. Turning it off risks unrecoverable corruption on most storage and is almost never safe.
When it matters
Leave it on. Only storage that guarantees atomic page writes could justify off, and the risk rarely warrants it.
| Default | on |
|---|---|
| Type | bool |
| Change scope | Reload, no restart |
| Category | WAL & checkpoints |
SHOW full_page_writes;Tradeoffs
- • Off risks torn-page corruption after a crash on ordinary storage.
- • On adds WAL volume, especially just after checkpoints -- pair with wal_compression.
- • This is a durability guarantee, not a performance knob to casually disable.