이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.503 사설 토토 가져오기 실패버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.4. 사설 토토 가능 격리 레벨

사설 토토 가능가장 높은 것을 제공합니다 거래 격리. 이 레벨은 직렬 트랜잭션을 에뮬레이트합니다. 마치 트랜잭션이 한 번에 실행된 것처럼 실행됩니다. 동시에가 아닌 순차적으로 또 다른 것입니다. 그러나, 이 수준을 사용하는 애플리케이션은 재시도할 준비가 되어 있어야 합니다. 사설 토토 실패로 인한 거래.

트랜잭션이 사설 토토 가능 수준에 있을 때, a선택쿼리는 이전에 커밋된 데이터만 봅니다. 트랜잭션이 시작되었지만 커밋되지 않은 데이터 또는 동시 트랜잭션 실행 중에 커밋된 변경 사항 거래. (그러나선택그렇습니다 이 동일한 내에서 실행된 이전 업데이트의 효과를 확인하세요. 아직 커밋되지 않은 경우에도 트랜잭션이 발생합니다.) 이는 Read Committed와 다른 점은 다음과 같습니다.선택시작 시점의 스냅샷을 봅니다. 트랜잭션 내에서 현재 쿼리가 시작된 시점이 아닙니다. 거래.

실행 중 쿼리에 의해 대상 행이 발견된 경우업데이트문장 (또는삭제또는업데이트를 위해 선택)는 이미 커밋되지 않은 동시 트랜잭션에 의해 업데이트된 후 두 번째 이 행을 업데이트하려고 시도하는 트랜잭션은 다른 행을 기다립니다. 커밋하거나 롤백할 트랜잭션입니다. 롤백의 경우, 대기 중인 트랜잭션은 행 변경을 진행할 수 있습니다. 의 경우 동시 트랜잭션 커밋, 사설 토토 가능 트랜잭션은 메시지와 함께 롤백됩니다.

오류: 동시 업데이트로 인해 액세스를 직렬화할 수 없습니다.

사설 토토 가능한 트랜잭션은 변경된 행을 수정할 수 없기 때문에 사설 토토 가능 트랜잭션 이후 다른 트랜잭션에 의해 시작했습니다.

응용프로그램이 이 오류 메시지를 받으면, 현재 트랜잭션을 중단하고 전체를 다시 시도하십시오. 처음부터 거래. 두 번째로 통과한 것은, 트랜잭션은 이전에 커밋된 변경 사항을 트랜잭션의 일부로 간주합니다. 데이터베이스의 초기 보기이므로 논리적 충돌이 없습니다. 새 버전의 행을 시작점으로 사용 새로운 거래 업데이트. 거래만 업데이트된다는 점에 유의하세요. 재시도가 필요할 수 있습니다. --- 읽기 전용 트랜잭션은 재시도가 필요하지 않습니다. 직렬화 충돌이 발생했습니다.

사설 토토 가능한 트랜잭션 수준은 엄격한 각 거래가 전체적으로 일관된 관점을 볼 수 있도록 보장합니다. 데이터베이스. 다만, 신청서는 다음 사항에 맞게 준비되어야 합니다. 동시 업데이트로 인해 트랜잭션을 재시도할 수 없는 경우 연속 실행의 환상을 유지하고 다시 실행하는 데 드는 비용 복잡한 거래가 중요할 수 있습니다. 그러니까 이 수준은 업데이트 쿼리에 논리가 충분히 포함된 경우에만 권장됩니다. Read Committed에서 잘못된 답변을 제공할 수 있는 복잡한 문제 수준.