Léxico de TI › Bancos de dados › XID wraparound

XID wraparound

Bancos de dados Svenska → Atualizado: 2026-10-01

Os IDs de transação do PostgreSQL têm 32 bits e dão a volta. Se os antigos não forem aposentados a tempo, o banco para de aceitar escritas por completo.

A visibilidade de uma linha depende de a transação que a criou ter vindo antes ou depois da sua, mas um contador circular não tem um "antes" absoluto: metade do espaço conta como passado e metade como futuro. Se uma linha antiga cruzasse a fronteira dos dois bilhões, ela passaria de repente a parecer vinda do futuro e ficaria invisível — por isso o autovacuum faz o freeze das linhas antigas, marcando-as como permanentemente visíveis. Deixe isso atrasar demais e o servidor começa a emitir avisos; com um milhão de IDs restantes, ele bloqueia as escritas e exige um vacuum em modo monousuário. É uma das poucas causas conhecidas de indisponibilidade não planejada de vários dias em instalações de Postgres de resto bem operadas.

← Voltar ao léxico