Isolation Level

Lee Luda·2024년 3월 12일

ASAC_04

목록 보기
9/10

Data Integrity

관계형 데이터베이스(RDBMS)의 특징은 고신뢰성(High Relability), 데이터 무결성(Data Integrity)이다.

그중, Data Integrity는 아래의 4가지의 Transaction 성질을 준수하며 보장되는 특징이다.

  • Atomicity- 원자성: 완벽하게 수행되거나 완벽하게 수행되지 않아야 한다.
  • Consistency- 일관성: 데이터 저장 시 모든 제약 조건들을 만족하며 데이터 조작 발생 직후, 조회 시 최신값을 볼 수 있어야 한다.
  • Isolation- 격리성: 동시에 다수 쿼리가 발생 시 모든 쿼리에 해당하는 Transaction은 독립되어야 한다.
  • Durability- 지속성: 데이터가 지속적으로 존재하며 로그를 통해 보완해야 한다.

해당 글에서 설명할 성질은 Isolation Level 즉, 격리 수준이다. 격리 수준은 Transaction의 수행이 독립되는 정도를 L1(병렬) 부터 L4(직렬)로 명시한다.


L0 Read Uncommitted

Read Uncommitted

커밋 되지 않은 값을 읽는 것을 허용한 수준으로 트랜잭션이 데이터를 공유하여 접근해도 보호 되지 않는다.

  1. T1의 시작
  2. T2의 시작
  3. T1이 ID = 1, Value = MIN을 KIM으로 변경
  4. T2가 ID = 1 조회, Value = KIM이 조회
  5. T1, T2 종료
  • 위의 과정에서 발생하는 문제점은 커밋되지 않은 즉, T1이 종료되기 전의 값을 T2가 읽는 Drity Read가 발생한다.

L1 Read Committed

Read Committed

  1. T1 시작
  2. T1이 ID = 1, Value = MIN을 KIM으로 변경
  3. T2 시작
  4. T2 ID = 1 조회, 이전에 커밋된 값인 MIN이 검색된다.
  5. T1이 변경된 값을 커밋 후 종료
  6. T2가 ID = 1 조회, 방금 커밋된 KIM이 검색 된다.
  7. T2 커밋 후 종료
  • 커밋된 값만 읽을 수 있는 수준이기 때문에 Dirty Read는 발생하지 않는다. 하지만, T2가 ID = 1을 처음 조회하면 이전의 커밋된 MIN이 읽히고, 다시 조회를 하면 직전에 T1에 의해 커밋된 값인 KIM이 읽힌다. 이처럼 하나의 트랜잭션이 같은 값을 조회할 때 다른 값이 검색되는 Non-Repeatable Read가 발생한다.

L2 Repeatable Read

Repeatable Read

  1. T1 시작
  2. T1 ID = 1 조회, Value = MIN 검색된다.
  3. T2 시작
  4. T2가 ID = 1, Value KIM으로 변경
  5. T1이 ID = 1 조회, T2의 변경 내역 조회 불가, MIN이 검색된다.
  6. T2가 ID = 2, Value KIM 삽입, 커밋 후 종료
  7. T1이 ID = 2 조회, Value KIM 검색된다.
  8. T1 종료
  • 트랜잭션이 시작되고 종료되기 전까지는 한 번 조회한 값은 계속 같은 값이 조회되는 수준이기 때문에 Non-Repeatable Read는 발생하지 않는다. 하지만, 5번 처럼 트랜잭션의 종료 전까지는 계속 같은 값이 조회되고, 만약 8번에서 T2가 비정상적으로 종료되어 롤백되었다면, ID = 2, Value KIM 데이터는 존재하지 않지만 T1은 계속해서 읽히는 Phantom Read가 발생한다.

L3 Serializable

Serializable

  1. T1 시작, 조회
  2. T1 데이터 변경
  3. T1 커밋 후 종료
  4. T2 시작
  5. T2 조회
  6. T2 커밋 후 종료
  • 트랜잭션을 직렬로 처리하여 실행의 순서를 보장하며 데이터의 독립을 보장한다. 하지만, 모든 트랜잭션의 수행을 직렬로 수행시 정책에 대해서는 어떠한 에러도 발생하지는 않으나 어느 정도의 병렬처리보다 시간이 많이 소요되기 때문에 성능 하락의 문제가 있다.

L0, L1, L2 이미지 출처

L3 이미지 출처

👉🏻노션 링크

profile
To Luda

0개의 댓글