차이: 반복 불가능한 읽기의 초점은 수정입니다. 동일한 조건에서 처음과 두 번째로 읽는 값이 다릅니다. 팬텀 읽기의 초점은 동일한 조건에서 추가 또는 삭제이며, 첫 번째와 두 번째로 읽는 레코드 수가 다릅니다. 제어 관점에서 볼 때 반복 불가능 읽기는 조건을 충족하는 레코드만 잠그면 되는 반면, 팬텀 읽기는 조건을 충족하는 레코드 및 유사한 레코드를 잠그면 됩니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
세련된 설명:
반복 불가능한 읽기의 핵심은 수정입니다:
같은 조건, 읽은 데이터를 다시 읽어보면 값이 다르다는 것을 알 수 있습니다.
팬텀리딩의 핵심은 추가냐 삭제냐에 따라 다름
동일한 조건에서 1차와 2차에 읽어내는 레코드의 개수가 다르다
물론 전체적인 결과로 보면 그럴 것 같다. 둘 다 두 번 읽은 결과가 일치하지 않는 결과를 보여줍니다.
하지만 제어 측면에서 보면 둘의 차이가 상대적으로 큽니다
전자의 경우 해당 기록만 잠그면 됩니다. 조건 충족
후자의 경우 조건을 만족하는 기록과 유사 기록을 잠가야 합니다
상세 설명:
1) "반복 불가능 읽기"는 다음을 의미합니다. 트랜잭션 내에서 동일한 데이터가 여러 번 발생합니다. 이 트랜잭션이 끝나기 전에 다른 트랜잭션도 동일한 데이터에 액세스합니다. 그러면 첫 번째 트랜잭션에서 두 번 읽은 데이터 사이에 두 번째 트랜잭션의 수정으로 인해 첫 번째 트랜잭션에서 두 번 읽은 데이터가 다를 수 있습니다. 이와 같이 트랜잭션 내에서 두 번 읽은 데이터가 다르기 때문에 반복 불가능 읽기라고 합니다. 예를 들어, 편집자는 동일한 문서를 두 번 읽지만, 읽는 사이에 작성자는 문서를 다시 작성합니다. 편집자가 문서를 두 번째로 읽으면 문서가 변경된 것입니다. 원시 읽기는 반복할 수 없습니다. 작성자가 문서를 작성한 후에만 편집자가 문서를 읽을 수 있으면 이 문제를 피할 수 있습니다. 이 상황을 방지하려면 일반적으로 격리 수준 설정을 사용하여 격리 수준을 설정하여 트랜잭션 A가 두 번 읽히도록 할 수 있습니다. 테이블 T의 데이터를 가져오는 동안 트랜잭션 B가 테이블 T의 데이터를 변경하려고 시도하면(자세한 내용은 트랜잭션 A가 데이터를 읽을 때임) 트랜잭션 A가 커밋될 때까지 차단됩니다! 이는 트랜잭션 A가 두 번 읽은 데이터의 일관성을 보장합니다.
2) 환각 읽기란 트랜잭션이 독립적으로 실행되지 않을 때 발생하는 현상을 말합니다. 예를 들어 첫 번째 트랜잭션은 테이블의 데이터를 수정하는데, 이 수정에는 테이블의 모든 데이터 행이 포함됩니다. 동시에 두 번째 트랜잭션도 이 테이블의 데이터를 수정합니다. 이 수정으로 인해 테이블에 새 데이터 행이 삽입됩니다. 그러면 나중에 첫 번째 트랜잭션을 수행한 사용자는 마치 환각이 발생한 것처럼 테이블에 아직 수정되지 않은 데이터 행이 있다는 것을 알게 될 것입니다. 예를 들어, 편집자는 작성자가 제출한 문서를 변경했지만 프로덕션에서 변경 내용을 문서의 마스터 사본에 병합할 때 작성자가 편집되지 않은 새 자료를 문서에 추가했음이 발견되었습니다. 편집자와 제작 부서가 원본 문서 작업을 마칠 때까지 누구도 문서에 새 자료를 추가할 수 없다면 이 문제를 피할 수 있습니다.
관련 무료 학습 권장사항:위 내용은 반복 불가능 읽기와 팬텀 읽기의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!