Write-Ahead Log (WAL) — фундаментальный механизм современных СУБД: любая операция изменения (INSERT / UPDATE / DELETE / DDL) сначала записывается в специальный лог-файл на диске, и только потом применяется к основному хранилищу таблиц. Если процесс БД упал до применения — при рестарте WAL проигрывается заново и данные восстанавливаются без потери.
В Postgres WAL лежит в `pg_wal/` (до v10 назывался `pg_xlog`), сегментами по 16 МБ. `wal_level`, `max_wal_size`, `checkpoint_timeout` — параметры настройки. В MySQL/InnoDB тот же механизм называется redo log (`ib_logfile*`).
Практическое значение: (1) crash-safety — коммит транзакции считается успешным, когда WAL синхронно записан на диск (`fsync`), не когда данные разложены по таблицам. (2) репликация — стриминг WAL на реплику даёт синхронную/асинхронную копию БД. (3) PITR (Point-In-Time Recovery) — можно восстановить БД на любую секунду в прошлом, применив архивированный WAL поверх базового бэкапа.
Опасно: (1) диск для WAL заполняется — БД останавливает запись до освобождения. (2) `synchronous_commit = off` даёт скорость, но потеряете последние секунды данных при сбое. (3) не архивируете WAL — теряете возможность PITR, остаётся только nightly-бэкап.