DBAtlas · Atlas de operações de banco de dados

40001: serialization_failure

PostgreSQL

O que significa?

No nível de isolamento SERIALIZABLE ou REPEATABLE READ, a transação não pôde ser serializada porque entrou em conflito com alterações concorrentes, e foi cancelada. Este é um comportamento esperado que protege a consistência dos dados.

Por que acontece?

Transações que acessam os mesmos dados concorrentemente não podem ser organizadas em uma ordem serializável, conflitos de escrita sob alta concorrência, ou dependências perigosas detectadas pelo SSI (Serializable Snapshot Isolation).

Como resolver

Não é um bug, mas um sinal esperado: repita a transação como está. Adicione lógica de retry automático à aplicação. Para reduzir conflitos, encurte as transações e use um nível de isolamento mais baixo (READ COMMITTED) se ele não for realmente necessário. Projete para reduzir a contenção em hot rows.

Abrir no DBAtlas →

Mais entradas deste banco