>데이터 베이스 >MySQL 튜토리얼 >SQL92 표준의 네 가지 격리 수준을 요약합니다.

SQL92 표준의 네 가지 격리 수준을 요약합니다.

藏色散人
藏色散人앞으로
2021-12-03 09:46:361815검색

Oread uncommitted (unsurmit 내용 읽기)

  • Read Uncommitted에서 트랜잭션 수정은 제출하지 않아도 다른 업무에 노출됩니다. 트랜잭션은 커밋되지 않은 데이터를 읽을 수 있으며, 이를 더티 읽기(dirty read)라고도 합니다. 이 수준은 성능면에서 많은 문제를 일으킬 수 있습니다. Read uncommitted는 다른 수준에 비해 그다지 좋지는 않지만, 꼭 필요한 이유가 없는 한 실제 응용 프로그램에서는 거의 사용되지 않습니다.

읽기 커밋(커밋 내용 읽기)

  • 대부분의 데이터베이스 시스템의 기본 격리 수준은 읽기 커밋입니다(그러나 MySQL은 그렇지 않습니다). 커밋된 읽기는 앞서 언급한 격리의 간단한 정의를 충족합니다. 즉, 트랜잭션이 시작되면 커밋된 트랜잭션에 의해 이루어진 수정 사항만 볼 수 있습니다. 즉, 트랜잭션이 처음부터 커밋된 시점까지 수정된 내용은 다른 트랜잭션에서 볼 수 없습니다. 동일한 쿼리를 두 번 실행하면 다른 결과가 나올 수 있으므로 이 수준을 반복 불가능 읽기라고도 합니다.

반복 읽기(repeatable read)

  • 반복 읽기는 더티 읽기 문제를 해결합니다. 이 수준은 동일한 트랜잭션에서 동일한 레코드를 여러 번 읽은 결과의 일관성을 보장합니다. 그러나 이론적으로 반복 읽기 격리 수준은 여전히 ​​또 다른 팬텀 읽기 문제를 해결할 수 없습니다. 소위 팬텀 읽기는 트랜잭션이 특정 범위의 레코드를 읽을 때 다른 트랜잭션이 해당 범위에 새 레코드를 삽입하는 것을 의미합니다. 이전 트랜잭션이 해당 범위의 레코드를 다시 읽으면 팬텀 행이 생성됩니다. InnoDB 및 XtraDB 스토리지 엔진은 MVCC(다중 버전 동시성 제어)를 통해 팬텀 읽기 문제를 해결합니다.
  • 반복 읽기는 Mysql의 기본 트랜잭션 격리 수준입니다. InnoDB는 주로 MVVC를 사용하여 높은 동시성을 확보하고 팬텀 읽기를 방지하기 위해 next-key-locking이라는 전략을 사용합니다.

직렬화 가능(직렬화 가능)

  • 직렬화 가능은 가장 높은 격리 수준입니다. 트랜잭션을 강제로 직렬화하여 앞서 언급한 팬텀 읽기 문제를 방지합니다. 간단히 말해서, 직렬화 가능은 읽은 데이터의 모든 행에 잠금을 추가하므로 많은 시간 초과 및 잠금 획득 문제가 발생할 수 있습니다. 이 격리 수준은 실제 애플리케이션에서는 거의 사용되지 않으며 데이터 일관성을 보장하는 데 매우 필요하고 동시성의 부재가 허용되는 경우에만 고려해야 합니다.

격리 수준

ANSI SQL92 P68-69

레벨(격리 수준)Dirty Read(더티 읽기)커밋되지 않은 읽기(커밋되지 않은 콘텐츠 읽기)✓×××추천 학습: "mysql 비디오 튜토리얼
Non-repeatable read(반복 불가능 읽기) Phantom(팬텀 읽기)
커밋된 읽기(커밋된 콘텐츠 읽기)
반복 읽기(반복 가능 읽기)
× 직렬화 가능(Serialized)
× ×

                                                                           

위 내용은 SQL92 표준의 네 가지 격리 수준을 요약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제