Журналирование#
В процессе работы часть данных, с которыми имеет дело СУБД, хранится в оперативной памяти и записывается на диск отложенным образом. Чем реже это происходит, тем меньше ввод-вывод и тем быстрее работает система.
Но при возникновении сбоя содержимое оперативной памяти будет потеряно, а останутся лишь данные, записанные на диск (при некоторых видах сбоев может пострадать и диск, но в этом случае поможет лишь резервная копия). Возможно организовать ввод-вывод таким образом, чтобы данные на диске всегда поддерживались в согласованном состоянии, но это вызывает большие сложности.
В PostgreSQL данные, записанные на диск, оказываются несогласованными некоторое время и если в этот момент возникает сбой, для восстановления после сбоя требуются определенные действия, чтобы эту согласованность восстановить.
Для этого используется журнал предзаписи WAL (Write-Ahead Logging) — механизм в PostgreSQL, который обеспечивает надёжность, долговечность и масштабируемость базы данных.
Important
Принцип WAL: все изменения в базе данных записываются в журнал перед тем, как быть применёнными к реальным файлам данных. Это позволяет в случае сбоя восстановить базу данных до согласованного состояния.