WAL (Write Ahead Log) в PostgreSQL работает следующим образом: перед тем, как изменить что-либо на странице, СУБД делает соответствующую запись в WAL (он же XLOG, от Transaction Log). 2 WAL хранится на диске. 2 Запись содержит информацию о том, например, «открыть такую-то страницу и записать N таких-то байт по такому-то смещению». 2
Основная идея WAL состоит в том, что изменения в файлах с данными (где находятся таблицы и индексы) записываются только после того, как эти изменения были занесены в WAL, то есть после того, как записи WAL, описывающие данные изменения, будут сохранены на постоянное устройство хранения. 5
В случае аварийной остановки при следующем запуске СУБД откроет WAL и проиграет все записи из него, то есть сделает все изменения, которые могли потеряться. 2