MVCC 충돌 오류

Nick Lamb -

중복 트랜잭션이 두 트랜잭션 중 하나를 종료해야만 해결되는 충돌을 만들 때 MVCC 충돌 오류가 발생합니다. 가장 좋은 예는 두 개의 트랜잭션이 동일한 행을 수정하려고 할 때입니다. 동일한 테이블의 다른 행에 영향을 주는 겹치는 트랜잭션은 MVCC 오류를 발생시키지 않습니다. 이 유형의 오류에 대한 재처리 로직을 애플리케이션에 삽입하는 것이 가장 좋습니다.

대부분의 작업 부하에서 "Container MVCC conflict" 에러를 보는 주된 이유는 나중에 트랜잭션이 같은 위치에서 작업을 커밋했기 때문입니다. 이것에 대한 가장 일반적인 이유는 작업을 수행하기 위해 잠금을 얻지 않고 이전 명령문이 커밋할 준비를 하는 동안 트랜잭션을 완료한  INSERT문입니다.

반면에 "MVCC serializable scheduler conflict" 오류는 사용자 트랜잭션이 리밸런서 작업과 같은 일부 시스템 트랜잭션(시스템 트랜잭션만 serializable isolation을 사용함)과 충돌할 때 발생합니다. 이 오류는 ALTER 중에 릴레이션(relation)에 기록할 때 발생할 수도 있습니다. 

MVCC에 대한 자세한 내용은, Concurrency Control 문서를 참조하십시오.

또 다른 질문이 있으십니까? 문의 등록

0 댓글

댓글을 남기려면 로그인하세요.
Zendesk 제공