SERIALIZALE최고를 제공합니다 거래 격리. 이 수준은 연속 거래를 모방합니다 마치 거래가 실행 된 것처럼 실행 동시에보다 연속적으로, 또 다른. 하지만, 이 레벨을 사용하는 응용 프로그램은 다시 시도해야합니다 사설 토토 실패로 인한 거래.
트랜잭션이 사설 토토 가능한 수준에있을 때 Aselect쿼리는 이전에 커밋 된 데이터 만 볼 수 있습니다 거래가 시작되었고 커밋되지 않은 데이터 또는 동시에 거래 실행 중에 커밋 된 변경 업무. (그러나select동일한 내에서 실행 된 이전 업데이트의 효과를 참조하십시오. 거래는 아직 커밋되지 않았지만 거래합니다.) 이것은 읽은 것과 다르면select시작 시점에서 스냅 샷을 봅니다 현재 쿼리가 시작될 때가 아닌 트랜잭션 거래.
Query에서 대상 행을 실행 중에 찾은 경우업데이트Statement (또는삭제또는업데이트 선택) 이미 동시에 커밋되지 않은 트랜잭션으로 업데이트 된 다음 두 번째 트랜잭션으로 업데이트됩니다 이 행을 업데이트하려는 거래는 다른 사람을 기다릴 것입니다. 커밋 또는 롤백으로의 거래. 롤백의 경우 대기 트랜잭션은 행을 변경할 수 있습니다. 의 경우 동시 트랜잭션 커밋, 직렬화 가능한 트랜잭션이 있습니다 메시지로 롤백해야
오류 : 동시 업데이트로 인해 액세스를 직렬화 할 수 없습니다
사설 토토 가능한 트랜잭션으로 행이 변경 될 수 없기 때문에 사설 토토 가능한 거래 후 다른 거래에 의해 시작했다.
응용 프로그램 이이 오류 메시지를 받으면해야합니다 현재 거래를 중단 한 다음 전체를 다시 시도하십시오 처음부터 거래. 두 번째로 거래는 이전에 커밋 된 변화를 그 일부로보고 있습니다 데이터베이스의 초기보기이므로 논리적 충돌은 없습니다. 행의 새 버전을 새로운 거래의 업데이트. 거래 만 업데이트하십시오 재시험해야 할 수도 있습니다 .-- 읽기 전용 거래는 없습니다. 직렬화 충돌.
직렬화 가능한 트랜잭션 수준은 엄격한 것을 제공합니다 각 거래가 전적으로 일관된 관점을 보도록 보장합니다. 데이터베이스. 그러나 응용 프로그램을 준비해야합니다 동시 업데이트가 불가능할 때 거래를 다시 시도합니다 일련의 실행의 환상과 재조정 비용을 유지하십시오. 복잡한 거래가 중요 할 수 있습니다. 그래서이 수준입니다 업데이트 쿼리에 논리가 충분히 포함 된 경우에만 권장됩니다 그들이 저지른 읽기에서 잘못된 답변을 줄 수 있다는 복합체 수준.