DBAtlas · 데이터베이스 운영 아틀라스

40001: serialization_failure

PostgreSQL

의미

SERIALIZABLE 또는 REPEATABLE READ 격리 수준에서 트랜잭션이 동시 변경과 충돌해 직렬화할 수 없어 취소되었다. 데이터 일관성을 보호하는 예상된 동작이다.

원인

같은 데이터에 동시에 접근하는 트랜잭션을 직렬화 가능한 순서로 배열할 수 없음, 높은 동시성에서의 쓰기 충돌, 또는 SSI(Serializable Snapshot Isolation)가 감지한 위험한 종속성.

해결 방법

버그가 아니라 예상된 신호이다: 트랜잭션을 그대로 재시도한다. 애플리케이션에 자동 재시도 로직을 추가한다. 충돌을 줄이려면 트랜잭션을 짧게 하고, 실제로 필요하지 않다면 더 낮은 격리 수준(READ COMMITTED)을 사용한다. hot row에 대한 경합을 줄이도록 설계한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목