반복 불가능 읽기와 팬텀 읽기의 차이점은 무엇입니까?

青灯夜游
풀어 주다: 2023-01-05 16:10:29
원래의
26543명이 탐색했습니다.

차이: 반복 불가능한 읽기의 초점은 수정입니다. 동일한 조건에서 처음과 두 번째로 읽는 값이 다릅니다. 팬텀 읽기의 초점은 동일한 조건에서 추가 또는 삭제이며, 첫 번째와 두 번째로 읽는 레코드 수가 다릅니다. 제어 관점에서 볼 때 반복 불가능 읽기는 조건을 충족하는 레코드만 잠그면 되는 반면, 팬텀 읽기는 조건을 충족하는 레코드 및 유사한 레코드를 잠그면 됩니다.

반복 불가능 읽기와 팬텀 읽기의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

세련된 설명:

반복 불가능한 읽기의 핵심은 수정입니다:

같은 조건, 읽은 데이터를 다시 읽어보면 값이 다르다는 것을 알 수 있습니다.

팬텀리딩의 핵심은 추가냐 삭제냐에 따라 다름

동일한 조건에서 1차와 2차에 읽어내는 레코드의 개수가 다르다

물론 전체적인 결과로 보면 그럴 것 같다. 둘 다 두 번 읽은 결과가 일치하지 않는 결과를 보여줍니다.

하지만 제어 측면에서 보면 둘의 차이가 상대적으로 큽니다

  • 전자의 경우 해당 기록만 잠그면 됩니다. 조건 충족

  • 후자의 경우 조건을 만족하는 기록과 유사 기록을 잠가야 합니다

상세 설명:

1) "반복 불가능 읽기"는 다음을 의미합니다. 트랜잭션 내에서 동일한 데이터가 여러 번 발생합니다. 이 트랜잭션이 끝나기 전에 다른 트랜잭션도 동일한 데이터에 액세스합니다. 그러면 첫 번째 트랜잭션에서 두 번 읽은 데이터 사이에 두 번째 트랜잭션의 수정으로 인해 첫 번째 트랜잭션에서 두 번 읽은 데이터가 다를 수 있습니다. 이와 같이 트랜잭션 내에서 두 번 읽은 데이터가 다르기 때문에 반복 불가능 읽기라고 합니다. 예를 들어, 편집자는 동일한 문서를 두 번 읽지만, 읽는 사이에 작성자는 문서를 다시 작성합니다. 편집자가 문서를 두 번째로 읽으면 문서가 변경된 것입니다. 원시 읽기는 반복할 수 없습니다. 작성자가 문서를 작성한 후에만 편집자가 문서를 읽을 수 있으면 이 문제를 피할 수 있습니다. 이 상황을 방지하려면 일반적으로 격리 수준 설정을 사용하여 격리 수준을 설정하여 트랜잭션 A가 두 번 읽히도록 할 수 있습니다. 테이블 T의 데이터를 가져오는 동안 트랜잭션 B가 테이블 T의 데이터를 변경하려고 시도하면(자세한 내용은 트랜잭션 A가 데이터를 읽을 때임) 트랜잭션 A가 커밋될 때까지 차단됩니다! 이는 트랜잭션 A가 두 번 읽은 데이터의 일관성을 보장합니다.

2) 환각 읽기란 트랜잭션이 독립적으로 실행되지 않을 때 발생하는 현상을 말합니다. 예를 들어 첫 번째 트랜잭션은 테이블의 데이터를 수정하는데, 이 수정에는 테이블의 모든 데이터 행이 포함됩니다. 동시에 두 번째 트랜잭션도 이 테이블의 데이터를 수정합니다. 이 수정으로 인해 테이블에 새 데이터 행이 삽입됩니다. 그러면 나중에 첫 번째 트랜잭션을 수행한 사용자는 마치 환각이 발생한 것처럼 테이블에 아직 수정되지 않은 데이터 행이 있다는 것을 알게 될 것입니다. 예를 들어, 편집자는 작성자가 제출한 문서를 변경했지만 프로덕션에서 변경 내용을 문서의 마스터 사본에 병합할 때 작성자가 편집되지 않은 새 자료를 문서에 추가했음이 발견되었습니다. 편집자와 제작 부서가 원본 문서 작업을 마칠 때까지 누구도 문서에 새 자료를 추가할 수 없다면 이 문제를 피할 수 있습니다.

관련 무료 학습 권장사항:

mysql 비디오 튜토리얼

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

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