Как устроена транзакция под капотом в PostgreSQL? Что такое WAL?

PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.

Короткий ответ

Что ответить на собеседовании

PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.

Подробный разбор

Ответ с пояснениями

PostgreSQL сочетает MVCC для видимости версий строк, блокировки для конкурентных изменений и WAL для восстановления. WAL записывает изменения раньше соответствующих страниц данных на диске.

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее