트랜잭션은 분할 할 수없는 일련의 데이터베이스 작업이자 데이터베이스 동시성 제어의 기본 단위입니다. 실행 결과는 데이터베이스를 일종의일관성 상태다른 사람이 되십시오일관성 상태
트랜잭션은 모두 실행되거나 실행되지 않는 논리적 작업 집합입니다.
4 가지 특성 (ACID)
원 자성 : 트랜잭션은 트랜잭션의 가장 작은 실행 단위, 내부 작업입니다.모두 완료되었거나 전혀 실행되지 않았습니다.
일관성 : 트랜잭션이 실행되기 전과 후에 데이터가 일관성을 유지하고 여러 트랜잭션이 동일한 결과로 동일한 데이터를 읽습니다.
격리 : 데이터베이스에 동시에 액세스 할 때 트랜잭션이 다른 트랜잭션에 의해 방해받지 않고 데이터베이스가 동시 트랜잭션간에 독립적입니다.
지속성 : 트랜잭션이 커밋 된 후 데이터베이스 변경 사항이 지속됩니다.
동시성 문제
더티 읽기
트랜잭션 A는 데이터 조각을 갱신하고 트랜잭션 B는 이때 동일한 데이터 조각을 읽습니다. 어떤 이유로 트랜잭션 A는 롤백 되며 트랜잭션 B에서 읽은 데이터는 올바르지 않습니다.
팬텀 독서
업무두 쿼리의 데이터 양이 일치하지 않습니다., 두 개의 쿼리 프로세스 중간에 B 트랜잭션 삽입 데이터 작업을 삽입 할 수 있습니다.
반복 불가능
업무두 쿼리 작업에서 일치하지 않는 데이터, 두 쿼리 프로세스 중간에 B 트랜잭션 업데이트 데이터 작업을 삽입 할 수 있습니다.
격리 수준
효과
트랜잭션의 4 가지 주요 특성을 달성하기 위해 데이터베이스는 낮은 수준에서 높은 수준까지 커밋되지 않은 읽기, 커밋 된 읽기, 반복 가능한 읽기 및 직렬화 가능으로 4 가지 트랜잭션 격리 수준을 정의합니다.이 4 가지 수준은 더티 읽기, 반복 불가능 읽기, 이러한 유형의 질문을 읽고있는 팬텀.
격리 수준
√ 미해결
× 해결됨
READ-UNCOMMITTED (커밋되지 않은 읽기): 제출되지 않은 데이터 변경을 읽을 수 있도록 허용하는 가장 낮은 격리 수준으로 더티 읽기, 팬텀 읽기 또는 반복 불가능한 읽기가 발생할 수 있습니다.
READ-COMMITTED (읽기가 제출 됨): 동시 트랜잭션에 의해 커밋 된 데이터를 읽을 수 있으므로 더티 읽기를 방지 할 수 있지만 팬텀 읽기 또는 반복 불가능 읽기는 계속 발생할 수 있습니다.
REPEATABLE-READ (반복 가능한 읽기): 데이터가 트랜잭션 자체에 의해 수정되지 않는 한 동일한 필드를 여러 번 읽은 결과는 일관 적입니다. 더티 읽기 및 반복 불가능한 읽기는 방지 할 수 있지만 팬텀 읽기는 계속 발생할 수 있습니다.
SERIALIZABLE (직렬화 가능): ACID 격리 수준을 완전히 준수하는 최고 격리 수준입니다. 모든 트랜잭션은 하나씩 실행되므로 트랜잭션 간의 간섭 가능성이 없습니다. 즉,이 수준은 더티 읽기, 반복 불가능 읽기 및 팬텀 읽기를 방지 할 수 있습니다.