>  기사  >  데이터 베이스  >  더티 읽기, 팬텀 읽기, 반복 불가능 읽기의 차이점은 무엇입니까?

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

coldplay.xixi
coldplay.xixi원래의
2020-09-02 13:41:1455177검색

더티 읽기, 팬텀 읽기, 반복 불가능 읽기의 차이점: 1. 더티 읽기는 트랜잭션이 데이터에 액세스하고 데이터가 수정되는 경우를 의미합니다. 2. 반복 불가능 읽기는 트랜잭션 내에서 동일한 읽기가 읽히는 것을 의미합니다. 3. 팬텀리딩(Phantom Reading)은 트랜잭션이 독립적으로 실행되지 않을 때 발생하는 현상을 말합니다.

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

【관련 학습 권장사항: mysql 튜토리얼

더티 리딩, 팬텀 리딩, 비반복 리딩의 차이점:

1. 더티 리딩: 더티. 독서 트랜잭션이 데이터에 액세스하고 데이터를 수정했지만 이 수정 사항이 아직 데이터베이스에 커밋되지 않은 경우를 의미합니다. 이때 다른 트랜잭션도 해당 데이터에 액세스한 후 해당 데이터를 사용합니다.

2. 반복 불가능 읽기: 트랜잭션 내에서 동일한 데이터를 여러 번 읽는 것을 의미합니다. 이 트랜잭션이 끝나기 전에 다른 트랜잭션도 동일한 데이터에 액세스합니다. 그러면 첫 번째 트랜잭션에서 읽은 두 개의 데이터 사이에 두 번째 트랜잭션의 수정으로 인해 첫 번째 트랜잭션에서 두 번 읽은 데이터가 다를 수 있습니다. 이와 같이 트랜잭션 내에서 두 번 읽은 데이터가 다르기 때문에 반복 불가능 읽기라고 합니다. 예를 들어, 편집자는 동일한 문서를 두 번 읽지만, 읽는 사이에 작성자는 문서를 다시 작성합니다. 편집자가 문서를 두 번째로 읽으면 문서가 변경된 것입니다. 원시 읽기는 반복할 수 없습니다. 작성자가 집필을 마친 후에만 편집자가 문서를 읽을 수 있으면 이 문제를 피할 수 있습니다.

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

보충: 메타데이터 기반 Spring 선언적 트랜잭션:

Isolation 속성은 총 5개의 트랜잭션 설정을 지원하며 세부 사항은 다음과 같습니다.

  • DEFAULT는 데이터베이스에서 설정한 격리 수준(기본값)을 사용합니다. DBA 기본값 격리 수준을 결정합니다.

  • READ_UNCOMMITTED는 더티 읽기, 반복 불가능 읽기 및 팬텀 읽기를 발생시킵니다(가장 낮은 격리 수준, 높은 동시성 성능)

  • READ_COMMITTED는 반복 불가능 읽기 및 팬텀 읽기를 발생시킵니다. (읽고 있는 파일 잠금) 행)

  • REPEATABLE_READ는 가상 읽기를 발생시킵니다(읽은 모든 행 잠금)

  • SERIALIZABLE은 모든 상황이 발생하지 않도록 보장합니다(테이블 잠금)

에 중점을 둡니다. 반복 불가능 읽기는 수정입니다.

동일한 트랜잭션에서 두 번 읽은 데이터는 다릅니다.

팬텀 리딩의 핵심은 추가 또는 삭제

같은 조건, 첫 번째와 두 번째로 읽어오는 레코드 개수가 다릅니다

더티 리딩:

두 번째 트랜잭션 읽기를 강조하지 않았습니다. 충분히 새로운 것이 도착하지 않았습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.