mysql- (고급 기사)-트랜잭션

사무

개념

  • 트랜잭션은 분할 할 수없는 일련의 데이터베이스 작업이자 데이터베이스 동시성 제어의 기본 단위입니다. 실행 결과는 데이터베이스를 일종의일관성 상태다른 사람이 되십시오일관성 상태
  • 트랜잭션은 모두 실행되거나 실행되지 않는 논리적 작업 집합입니다.

4 가지 특성 (ACID)

  • 원 자성 : 트랜잭션은 트랜잭션의 가장 작은 실행 단위, 내부 작업입니다.모두 완료되었거나 전혀 실행되지 않았습니다.
  • 일관성 : 트랜잭션이 실행되기 전과 후에 데이터가 일관성을 유지하고 여러 트랜잭션이 동일한 결과로 동일한 데이터를 읽습니다.
  • 격리 : 데이터베이스에 동시에 액세스 할 때 트랜잭션이 다른 트랜잭션에 의해 방해받지 않고 데이터베이스가 동시 트랜잭션간에 독립적입니다.
  • 지속성 : 트랜잭션이 커밋 된 후 데이터베이스 변경 사항이 지속됩니다.

동시성 문제

더티 읽기

  • 트랜잭션 A는 데이터 조각을 갱신하고 트랜잭션 B는 이때 동일한 데이터 조각을 읽습니다. 어떤 이유로 트랜잭션 A는 롤백 되며 트랜잭션 B에서 읽은 데이터는 올바르지 않습니다.

팬텀 독서

  • 업무두 쿼리의 데이터 양이 일치하지 않습니다., 두 개의 쿼리 프로세스 중간에 B 트랜잭션 삽입 데이터 작업을 삽입 할 수 있습니다.

반복 불가능

  • 업무두 쿼리 작업에서 일치하지 않는 데이터, 두 쿼리 프로세스 중간에 B 트랜잭션 업데이트 데이터 작업을 삽입 할 수 있습니다.

격리 수준

효과

  • 트랜잭션의 4 가지 주요 특성을 달성하기 위해 데이터베이스는 낮은 수준에서 높은 수준까지 커밋되지 않은 읽기, 커밋 된 읽기, 반복 가능한 읽기 및 직렬화 가능으로 4 가지 트랜잭션 격리 수준을 정의합니다.이 4 가지 수준은 더티 읽기, 반복 불가능 읽기, 이러한 유형의 질문을 읽고있는 팬텀.

격리 수준

  • √ 미해결
  • × 해결됨
    격리 수준
  • READ-UNCOMMITTED (커밋되지 않은 읽기): 제출되지 않은 데이터 변경을 읽을 수 있도록 허용하는 가장 낮은 격리 수준으로 더티 읽기, 팬텀 읽기 또는 반복 불가능한 읽기가 발생할 수 있습니다.
  • READ-COMMITTED (읽기가 제출 됨): 동시 트랜잭션에 의해 커밋 된 데이터를 읽을 수 있으므로 더티 읽기를 방지 할 수 있지만 팬텀 읽기 또는 반복 불가능 읽기는 계속 발생할 수 있습니다.
  • REPEATABLE-READ (반복 가능한 읽기): 데이터가 트랜잭션 자체에 의해 수정되지 않는 한 동일한 필드를 여러 번 읽은 결과는 일관 적입니다. 더티 읽기 및 반복 불가능한 읽기는 방지 할 수 있지만 팬텀 읽기는 계속 발생할 수 있습니다.
  • SERIALIZABLE (직렬화 가능): ACID 격리 수준을 완전히 준수하는 최고 격리 수준입니다. 모든 트랜잭션은 하나씩 실행되므로 트랜잭션 간의 간섭 가능성이 없습니다. 즉,이 수준은 더티 읽기, 반복 불가능 읽기 및 팬텀 읽기를 방지 할 수 있습니다.

추천

출처blog.csdn.net/DALAOS/article/details/113063296