카테고리 없음
트랜잭션 격리 수준
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 사용 가능.