> 데이터 베이스 > MySQL 튜토리얼 > 팬텀 읽기와 반복 불가능 읽기의 차이점

팬텀 읽기와 반복 불가능 읽기의 차이점

藏色散人
풀어 주다: 2020-05-13 10:03:08
원래의
6388명이 탐색했습니다.

팬텀 읽기와 반복 불가능 읽기의 차이점

팬텀 읽기와 반복 불가능 읽기의 차이점

1) "비반복 읽기"는 트랜잭션 내에서 동일한 데이터를 여러 번 읽는 것을 의미합니다. 이 트랜잭션이 끝나기 전에 다른 트랜잭션도 동일한 데이터에 액세스합니다. 그러면 첫 번째 트랜잭션에서 두 번 읽은 데이터 사이에 두 번째 트랜잭션의 수정으로 인해 첫 번째 트랜잭션에서 두 번 읽은 데이터가 다를 수 있습니다. 이와 같이 트랜잭션 내에서 두 번 읽은 데이터가 다르기 때문에 반복 불가능 읽기라고 합니다.

예를 들어 편집자는 동일한 문서를 두 번 읽었지만 읽는 사이에 작성자는 문서를 다시 작성합니다. 편집자가 문서를 두 번째로 읽으면 문서가 변경된 것입니다. 원시 읽기는 반복할 수 없습니다. 작성자가 쓰기를 마친 후에만 편집자가 문서를 읽을 수 있는 경우 이 문제를 피할 수 있습니다. 이 상황을 방지하려면 일반적으로 트랜잭션 A가 문서를 두 번 읽을 수 있도록 격리 수준 반복 읽기를 설정하여 격리 수준을 설정할 수 있습니다. 테이블 T에서 데이터를 가져오는 동안 트랜잭션 B가 테이블 T의 데이터를 변경하려고 시도하는 경우(세부 사항에는 트랜잭션 A가 데이터를 읽는 것이 포함됨) 트랜잭션 A가 커밋될 때까지 차단됩니다! 이는 트랜잭션 A가 두 번 읽은 데이터의 일관성을 보장합니다.

2) 팬텀 읽기(Phantom Read)는 트랜잭션이 독립적으로 실행되지 않을 때 발생하는 현상을 말합니다. 예를 들어 첫 번째 트랜잭션이 테이블의 데이터를 수정하는데, 이 수정에는 테이블의 모든 데이터 행이 포함됩니다. 동시에 두 번째 트랜잭션도 이 테이블의 데이터를 수정합니다. 이 수정으로 인해 테이블에 새 데이터 행이 삽입됩니다.

그러면 미래에 첫 번째 트랜잭션을 수행하는 사용자는 마치 환각에 빠진 것처럼 테이블에 아직 수정되지 않은 데이터 행이 있다는 것을 알게 될 것입니다.

예를 들어, 편집자는 작성자가 제출한 문서를 변경했지만 프로덕션에서 변경 사항을 문서의 마스터 사본에 병합할 때 작성자가 편집되지 않은 새 자료를 문서에 추가했다는 사실이 발견되었습니다. 편집자와 제작 부서가 원본 문서 작업을 마칠 때까지 누구도 문서에 새 자료를 추가할 수 없다면 이 문제를 피할 수 있습니다.

위의 예에서도 트랜잭션 A는 테이블 T의 데이터를 두 번 읽어야 합니다. 반복 읽기를 설정하면 트랜잭션 B가 데이터를 수정하는 것을 방지할 수 있지만 트랜잭션 B는 테이블 T에 새 데이터를 삽입할 수 있습니다.

이 문제를 방지하는 방법은 직렬화 가능한 격리 수준 사이에서 가장 높은 트랜잭션 격리 수준을 설정하는 것을 고려할 수 있습니다. 결과적으로 트랜잭션 B는 새 데이터를 테이블 T에 삽입하기 전에 트랜잭션 A가 제출될 때까지 순종적으로 기다릴 수 있으므로 팬텀 읽기를 피할 수 있습니다.

위 내용은 팬텀 읽기와 반복 불가능 읽기의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿