13.4.응용 프로그램 수준에서의 토토 베이 일관성 검사

11845_12122

반복 가능한 읽기 트랜잭션은 실행 전반에 걸쳐 토토 베이에 대한 안정적인 관점을 가지고 있지만 사용에 미묘한 문제가 있습니다MVCC토토 베이 일관성 검사를위한 스냅 샷,충돌 읽기/쓰기. 한 트랜잭션이 토토 베이를 작성하고 동시 트랜잭션이 동일한 토토 베이를 읽으려고 시도하면 (쓰기 전후에) 다른 트랜잭션의 작업을 볼 수 없습니다.

언급 된대로섹션 13.2.3, 직렬화 가능한 트랜잭션은 위험한 읽기/쓰기 충돌 패턴에 대한 비 차단 모니터링을 추가하는 반복 가능한 읽기 트랜잭션입니다. 명백한 실행 순서에서 사이클을 유발할 수있는 패턴이 감지되면 관련된 트랜잭션 중 하나가주기를 깨뜨리기 위해 롤백됩니다.

13.4.1.직렬화 가능한 트랜잭션과의 일관성 시행

직렬화 가능한 트랜잭션 격리 수준이 모든 쓰기와 토토 베이에 대한 일관된 견해가 필요한 모든 읽기에 사용되는 경우 일관성을 보장하기 위해 다른 노력이 필요하지 않습니다. 일관성을 보장하기 위해 직렬화 가능한 트랜잭션을 사용하도록 작성된 다른 환경의 소프트웨어Just Work이와 관련하여postgresql.

이 기술을 사용할 때 응용 프로그램 소프트웨어가 직렬화 실패로 롤백 된 트랜잭션을 자동으로 검토하는 프레임 워크를 통과하는 경우 응용 프로그램 프로그래머에 대한 불필요한 부담을 피할 수 있습니다. 설정하는 것이 좋습니다default_transaction_isolationtoSERIALIZABLE. 트리거의 트랜잭션 격리 수준의 점검을 통해 실수로 또는 무결성 점검을 전복시키지 않도록 조치를 취하는 것이 현명 할 것입니다..

참조섹션 13.2.3성능 제안.

경고

직렬화 가능한 트랜잭션을 사용한이 무결성 보호 수준은 아직 핫 스탠드 모드로 확장되지 않습니다 (섹션 27.4). 그로 인해 핫 스탠드비를 사용하는 사람들은 1 차 반복 가능한 읽기 및 명백한 잠금을 사용하기를 원할 수 있습니다.

13.4.2.명시 적 차단 잠금 장치와 일관성 시행

서리화 할 수없는 쓰기가 가능하면 행의 현재 유효성을 보장하고 동시 업데이트로부터 보호하기 위해 사용해야합니다업데이트 선택,공유 선택또는 적절한잠금 테이블진술. (업데이트 선택and공유 선택반환 된 행을 동시 업데이트에 대해 잠그십시오.잠금 테이블전체 테이블을 잠그십시오.) 응용 프로그램을 포팅 할 때를 고려해야합니다.postgresql다른 환경에서.

다른 환경에서 변환하는 사람들에게도 주목하십시오.업데이트 선택동시 트랜잭션이 선택한 행을 업데이트하거나 삭제하지 않도록 보장하지 않습니다.PostgreSQL값을 변경할 필요가 없어도 실제로 행을 업데이트해야합니다.업데이트 선택 일시적으로 차단동일한 잠금을 취득하거나 AN을 실행하는 다른 거래업데이트또는삭제잠긴 행에 영향을 미치지 만,이 잠금을 고치는 트랜잭션이 커밋되거나 롤백되면, 차단 된 트랜잭션은 실제가 아닌 경우 충돌 작업을 진행합니다.업데이트자물쇠가 유지되는 동안 행의 행이 수행되었습니다.

글로벌 타당성 점검에는 비 서리 화 할 수없는 추가 사고가 필요합니다MVCC. 예를 들어, 은행 응용 프로그램은 한 테이블의 모든 크레딧의 합이 두 테이블이 적극적으로 업데이트 될 때 다른 테이블의 회고 합계와 같는지 확인할 수 있습니다.SOLE SUM (...)두 번째 쿼리에는 첫 번째 쿼리가 포함되지 않은 트랜잭션 결과가 포함되므로 명령은 읽기 커밋 모드에서 안정적으로 작동하지 않습니다. 단일 반복 가능한 읽기 트랜잭션에서 두 합계를 수행하면 반복 가능한 읽기 트랜잭션이 시작되기 전에 저지른 트랜잭션의 영향에 대한 정확한 그림을 제공 할 수 있지만, 전달 될 때까지 답이 여전히 관련이 있는지 여부를 합법적으로 궁금해 할 수 있습니다.공유모드 (또는 더 높은) 잠금 잠금 장치는 현재 트랜잭션의 것 외에 잠긴 테이블에 미치광이 변경 사항이 없음을 보장합니다.

동시 변경을 방지하기 위해 명시 적 잠금에 의존하는 경우 읽기 커밋 모드를 사용하거나 반복 가능한 읽기 모드에서 쿼리를 수행하기 전에 잠금을 얻도록주의해야합니다. 반복 가능한 읽기 트랜잭션에 의해 얻은 잠금은 테이블을 수정하는 다른 트랜잭션이 여전히 실행되지 않도록 보장하지만, 트랜잭션에서 볼 수있는 스냅 샷이 잠금 장치를 얻는 경우, 현재 커미셔닝 된 일부 변경 사항을 사전 할 수 있습니다.select,삽입,업데이트또는삭제), 스냅 샷이 얼기 전에 명시 적으로 잠금을 얻을 수 있습니다.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면