개발 블로그
[데이터베이스]트랜잭션의 동시성과 고립성 본문
트랜잭션 고립성 (transaction isolation)
여러 트랜잭션들이 동시에 실행돼도 다른 트랜잭션들로부터 고립되어 실행되는 것처럼 보여야 하는 성질이다. 트랜잭션 고립성은 일반적으로 4단계로 나눈다.
1. READ_UNCOMMITTED
2. READ_COMMITTED
3. REPEATABLE_READ
4. SERLALIZABLE
1. READ_UNCOMMITTED
이 단계에서는 특정 트랜잭션에서 데이터를 변경했으나 다른 트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있다.

원래는 커밋되어야지 테이블 데이터를 변경할 수 있는데, 커밋 전에 데이터를 읽을 수 있는 이유는 히스토리 로그를 읽어 변경되지 않은 데이터를 읽었기 때문이다. 커밋이 완료되면 변경된 테이블을 읽을 수 있다.
2. READ_COMMITTED
이 단계는 특정 트랜잭션에서는 데이터를 변경했어도 커밋 되지 않았으면 변경되기 전의 데이어를 읽을 수 있다.

세션 A에서 데이터를 변경할 때 세션 B에서 데이터를 읽으면, 커밋 전이므로 변경되기 전 테이블을 읽는다. 세션 A가 커밋되면 세션 B는 변경된 데이터를 읽는다. 즉 커밋 전과 커밋 후에 둘다 테이블의 데이터를 읽는다.
3. REPEATABLE_READ
이 단계는 커밋 여부와 상관없이 반복적으로 데이터를 읽어도 트랜잭션 시작 시점의 값을 읽는다. 즉 다른 트랜잭션에서 변경된 데이터의 영향을 받지 않는다.

세션 B는 다른 세션의 트랜잭션의 커밋 여부와 상관없이 트랜잭션 시작 시점의 변경되기 전 값(변경 전 히스토리 로그)을 읽는다.
4. SERLALIZABLE
명시적인 트랜잭션 안에서 데이터를 변경할 때, 명시적인 트랜잭션 내에서 락을 가진 트랜잭션만 접근할 수 있다.

'전공 공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스]트랜잭션의 동시성과 lock (0) | 2022.12.18 |
---|---|
[데이터베이스] 트랜잭션(transaction)이란?/트랜잭션 개념, 성질 (0) | 2022.12.17 |
[데이터베이스] 정규화와 함수적 종속성 (0) | 2022.12.16 |
[데이터베이스] 릴레이션 분석 지침 (0) | 2022.12.14 |
[데이터베이스] 관계 대수(relational algebra)란? (0) | 2022.12.13 |