ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Isolation level - 트랜잭션 격리 수준
    DB 2024. 9. 22. 20:00

    1. Isolation Level 이란

    트랜잭션의 격리 수준(Isolation Level)이란, 여러 트랜잭션이 동시에 데이터베이스에 접근할 떄, 각 트랜젝션이 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행될 수 있도록 보장하는 수준을 의미한다. 다중 사용자 데이터베이서 환경에서 여러 트랜잭션이 동시에 실행될 때, 트랜잭션이 올바르게 실행되고 DB 의 무결성을 유지하기 위해 

     

    2. Isolation Level 의 단계

    • Read Uncommitted
      • 가장 낮은 수준의 isolation level
      • 다른 트랜잭션에서 아직 커밋되지 않은 데이터도 읽을 수 있음
      • 장점: 최고의 성능
      • 단점: Dirty read, Non-repeatable read, Phantom read 발생 가능성 높음
    • Read Comitted
      • 다른 트랜잭션에서 커밋된 데이터만 읽을 수 있음
      • Dirty read는 방지하지만, Non-repeatable read, Phantom read 는 발생 가능
      • 장점: Read Uncommitted 보다 데이터 일관성 높음
    • Reapeatable Read
      • 동일한 트랜잭션 내에서 동일한 데이터를 여러 번 읽을 때 항상 같은 값을 반환
      • Non-repeatable read 는 방지하지만, Phantom read 는 발생 가능
    • Serializable
      • 가장 높은 수준의 isolation level
      • 모든 트랜잭션이 순차적으로 실행되는 것과 동일한 효과를 보장
      • 장점: 가장 높은 수준의 데이터 일관성
      • 단점: 성능 저하

     

    Dirty read: 다른 트랜잭션에서 아직 커밋되지 않은 데이터를 읽는 현상
    Non-repeatable read: 동일한(하나의) 트랜잭션 내에서 동일한 데이터를 여러 번 읽었을 때 다른 값이 나오는 현상
    Phantom read: 특정 조건에 맞는 레코드를 조회했을 때, 다른 트랜잭션에서 새로운 레코드가 추가되어 다시 조회하면 다른 결과가 나오는 현상

     

    3. 어떤 상황에 어느 레벨을 적용하면 좋을까?

    • Read Uncommitted
      • 극한의 성능이 요구되는 경우 (예: 실시간 데이터 분석 시스템)
      • 데이터 일관성이 크게 중요하지 않은 경우
    • Read Committed
      • 대부분의 DBMS 에서 default 로 사용되고 있는 격리 수준
      • 대부분의 온라인 트랜잭션 처리 시스템 (OLTP)에서 사용
      • Dirty read를 방지하면서 적절한 성능을 유지
    • Repeatable Read
      • 금융 시스템 등 데이터의 정확성이 매우 중요한 시스템
    • Serializable
      • 복잡한 트랜잭션이 많고 데이터 일관성이 최우선인 시스템
Designed by Tistory.