Что хранится в WAL журнале

«Что хранится в WAL журнале» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

WAL (Write-Ahead Log) — это журнал предзаписи, который хранит изменения данных перед их применением в основное хранилище. В нем фиксируются:

  1. Операции записи — все изменения данных (INSERT, UPDATE, DELETE).
  2. Метаданные транзакций — начало/конец транзакции, контрольные точки (checkpoints).
  3. Служебная информация — например, LSN (Log Sequence Number) для контроля порядка записей.

Пример (условный):

type WALEntry struct {
    LSN      uint64
    Data     []byte // сериализованная операция
    TxID     string // ID транзакции
    Commit   bool   // флаг завершения транзакции
}

Зачем? Для обеспечения:

  • Долговечности (Durability) — данные не теряются при сбое.
  • Восстановления — репликация или откат к последней устойчивой точке.

Используется в БД (PostgreSQL), distributed-системах (etcd) и др.