카테고리 없음

트랜잭션 격리 수준

JUNGKEUNG 2024. 11. 26. 23:22
반응형

트랜잭션 격리 수준

여러 트랜잭션이 동시에 데이터베이스에 접근할 떄, 데이터의 일과넝을 어떻게 보장할지 결정하는 규칙이다.

 

트랜잭션 격리 수준의 필요성

동시에 여러 사용자가 데이터베이스에 접근하면 다음과 같은 문제가 발생할 수 있습

  • Dirty Read(더티리드) : 커밋되지 않은 데이터를 읽는 문제
  • Non-repeatable Read ( 비일관성 읽기 ) : 하나의 트랜잭션에서 같은 데이터를 반복조회할 떄 값이 달라지는 문제( 다른 트랜잭션에서 수정, 삭제 )
  • Phantom Read( 팬텀 리드 ) : 하나의 트랜잭션에서 같은 데이터를 반복 조회할 떄, 새로운 행이 추가되는 문제

 

격리 수준의 종류

  • Read UnCommitted( 읽기 미완료 허용)
  • Read Commited( 커밋된 것만 읽기)
  • Repeatable Read ( 반복 가능한 읽기 )
  • Serializable( 직렬화 수준 )

 

Read UnCommitted( 읽기 미완료 허용)

가장 낮은 격리 수준으로, 커밋되지 않은 데이터도 읽을 수 있습

특징

  • Dirty Read 발생 가능
  • Non-repeatable Read 와 Phantom Read 발생 가능

장점

  • 성능이 좋음
  • 락은 거의 사용하지 않음, 빠른 읽기 가능

Read Commited(커밋된 것만 읽기)

기본 격리 수준으로, 커밋된 데이터만 읽을 수 있음

특징

  • Dirty Read 방지
  • Non-repeatable Read 발생 가능
  • Phantom Read 발생가능

장점

  • 데이터의 기본적인 무결성을 보장하며 성능도 적당히 유지

 

Repeatable Read ( 반복 가능한 읽기 )

비일관성 읽기( Non-repeatable Read ) 를 방지함

동일 트랜잭션 내에서 반복 조회 시 항상 같은 데이터를 반환

특징

  • Dirty Read 방지
  • Non-repeatable Read 방지
  • Phantom Read 발생 가능 ( 새로운 행 추가는 허용 )

장점

  • 읽은 데이터가 수정되거나 삭제되지 않도록 보장

Serializable(직렬화 수준)

가장 높은 격리 수준으로, 모든 트랜잭션이 순차적으로 실행되는 것 처럼 동작

특징

  • Dirty Read 방지
  • Non-repeatable Read 방지
  • Phantom Read 방지

장점

  • 데이터 정확성이 가장 높음
  • 팬텀 리드까지 방지하여 완전한 일관성을 보장

단점

  • 성능이 크게 저하될 수 있음
  • 많은 락과 대기 발생

 

 

트랙잭션 격리 수준에 동시성과 일관성 변화

격리 수준이 높아지면서 데이터의 일관성이 유지될 수 있지만, 동시에 처리가능한 트랜잭션의 양은 떨어진다. 격리수준이 낮아지면 일관성은 유지되기 어렵지만, 동시에 처리할 수 있는 트랜잭션의 양은 늘어나게 된다.

 

 

동시성 : 동시에 수행하는 트랜잭션 양

일관성 : 트랜잭션의 작업 처리 결과가 향상 일관성이 있어야 한다

 

총 정리

트랜잭션 격리 수준은 데이터 정확성시스템 성능 간의 균형을 맞추는 도구

  • 낮은 격리 수준일수록 성능은 높아지지만 데이터 무결성 문제(Dirty Read, Non-repeatable Read, Phantom Read)가 발생할 가능성이 높습니다.
  • 높은 격리 수준일수록 데이터 정확성은 높아지지만, 락으로 인해 성능 저하가 발생할 수 있습니다.

 

  • 기본적으로 READ COMMITTED를 사용하며, 대부분의 상황에서 충분함.
  • 데이터의 무결성이 최우선일 경우 SERIALIZABLE 사용.
  • 성능이 중요한 배치 작업이나 로그 수집 시에는 READ UNCOMMITTED 고려.
  • 특정 상황에서만 필요한 범위에 REPEATABLE READ 사용 가능.