PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.
Как устроена транзакция под капотом в PostgreSQL? Что такое WAL?
PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.
Транзакция работает с версиями строк и снимком видимости; собственные изменения ещё не обязаны быть видны другим. При commit фиксируется её результат, а гарантии ожидания WAL зависят от настроек синхронности. Грязные страницы могут сбрасываться позже, поэтому после сбоя сервер воспроизводит WAL от подходящей контрольной точки. Rollback не означает обратное проигрывание каждого байта: незакоммиченные версии не становятся видимыми и позже очищаются. WAL — журнал восстановления, не история бизнес-событий и не самостоятельная полноценная резервная копия.