데이터베이스 업무의 네 가지 격리 단계

데이터베이스는 다음과 같은 네 가지 격리 단계를 정의합니다.
  • Read Uncommitted( )
  • Read Committed( )
  • Repeatable Read( )
  • Serializable( )

  • 이 네 가지 격리는 순서대로 높아지고 격리 단계가 낮을수록 시스템 비용이 적으며 병발 지원성이 높다.
    명령show variables like '%isolation%';을 사용하여 현재 데이터베이스에서 사용되는 격리 단계를 볼 수 있습니다.
    네 가지 격리 단계를 소개하기 전에 사무를 사용할 때 발생하는 세 가지 특수(대부분 오류가 발생할 수 있음) 읽기 유형을 설명한다.
  • 더러움은 한 사무 a가 데이터를 수정하거나 추가한 것을 말한다. a사무가 제출되기 전에 다른 사무 b가 이 데이터를 읽고 조작했다.a 스크롤을 하면 더럽혀서 b 작업이 존재하지 않는 데이터를 읽을 수 있습니다.
  • 한 번의 업무에서 두 번의 같은 조건의 조회가 일치하지 않는다. 예를 들어 a사무집행select count(*) from user where name='alex' 이때 사무b가 데이터name=alex를 삽입하여 제출하면 사무a가 두 번째 조회를 할 때 계수가 많아진다
  • 판독은 중복할 수 없는 것과 반대로 사무 a와 사무 b는 완전히 격리되고 사무 a 집행'select id from user에서 얻은 id는 1과 2.이 때 b 사무는user표에 데이터 id=3을 추가하여 제출한 다음에 사무 a는 id가 3인 데이터를 추가하려고 합니다. 만약 id가 유일하다면 a는 삽입할 수 없고dumplicate entry 3 for key id를 알립니다. 사무 a가 사무 b의 삽입 행위를 막기 때문입니다.

  • 혼동하지 않도록 중복독과 환독은 안 된다
    Read Uncommited
  • RU 모드에서는 커밋이 없어도 다른 커밋되지 않은 데이터를 읽을 수 있습니다.
  • RU는 모든 격리 수준 중 가장 낮습니다.RU 모드로 인한 더티(dirty) 읽기 발생
  • Read Commited
  • RC 모드에서 업무는 이미commit의 데이터만 읽을 수 있습니다.
  • 예를 들어 사무 a가 실행될 때 사무 b가 제출하지 않으면 a는 b의 데이터를 읽을 수 없다.b가 a를 제출하면 b가 수정한 데이터를 읽을 수 있습니다.
  • RC는 더티(dirty) 읽기는 피하지만 중복 읽기는 불가능합니다.
  • 대부분의 시스템은 RC 모드
  • 를 사용합니다.
    Repeatable
  • RR 모드에서 트랜잭션의 여러 Read는 다른 트랜잭션의 영향을 받지 않습니다
  • 는 RR 모드에서 사무 a가 창설할 때 현재 시간 데이터의 스냅샷을 얻었고 스냅샷은 나머지 사무의 영향을 받지 않는다는 것을 이해할 수 있다.
  • RR 모드는 다른 트랜잭션을 감지하지 못해 중복된 삽입이 발생할 수 있는 판독을 유발할 수 있습니다.
  • mysql innoDB의 RR 모드는 어느 정도 판독을 피할 수 있다. 이 특성은 (gap lock)를 통해 실현된 것으로 간극 자물쇠의 원리는 이 글을 참조할 수 있다.http://www.jianshu.com/p/bf86...

  • Serializable
  • 직렬화는 말 그대로 모든 읽기와 쓰기를 완전히 직렬화하는 것이다.
  • 직렬화는 모든 격리 수준에서 가장 높음
  • 읽을 때마다 테이블 레벨 공유 자물쇠를 가져와야 하기 때문에 읽기와 쓰기가 서로 막힌다
  • 직렬화는 자원에 대한 비용이 크고 병발 지원이 좋지 않으며 일부 장면에서만 사용된다.

  • 마지막으로 세 가지 읽기 유형에 대한 네 가지 격리 단계의 대조표를 제시한다.
    격리 단계
    더럽게 읽다
    중복 읽기 불가
    환상적으로 읽다
    Read Uncommited
    이 가능하다, ~할 수 있다,...
    이 가능하다, ~할 수 있다,...
    이 가능하다, ~할 수 있다,...
    Read Commited
    불가능
    이 가능하다, ~할 수 있다,...
    이 가능하다, ~할 수 있다,...
    Repeatable Read
    불가능
    불가능
    이 가능하다, ~할 수 있다,...
    Serializable
    불가능
    불가능
    불가능

    좋은 웹페이지 즐겨찾기