본문 바로가기

게으른개발자/공부

트랜잭션

정의: 안전하게 수행되는것을 보장하는 성질

 

성질

  • Atomicity(원자성): All OR Nothing (모두 반영, 전혀 반영 x)
  • Consistency(일관성): 트랜잭션 각각의 독립성 보장
  • Isonlation(독립성): 트랜잭션 각각의 독립성 보장
  • Durability(지속성): 트랜잭션 성공시 결과가 영구히 반영

트랜잭션 격리수준: 트랜잭션성질(ACID)도 지키면서 성능 보장을 위해 동시에 DB에 접근할때 그 접근을 어떻게 제어할지에 대한 설정

 

이름설명이미지비고

read-uncommitted  커밋 전의 트랜잭션의 데이터 변경 내용을 다른 트랜잭션이 읽는 것을 허용
Drity Read 현상 발생 가능성 있음
read-committed   커밋이 완료된 트랜잭션의 변경사항만 다른 트랜잭션에서 조회 가능

Non-Repeatable Read 발생 가능성 있음

: 같은 트랜잭션 내에서 같은 데이터를 조회했으나 데이터가 불일치하는 현상

 

  • PostgreSQL 기본 설정
repeatable-read  트랜잭션 범위 내에서 조회한 내용이 항상 동일함을 보장

Pahntom Read 발생 가능성 있음

: Pahntom Read는 Non-Repeatable Read의 한종류로 Select 문을 사용했을때 데이터가 추가되거나 없어지는 현상

 

serializable 한 트랜잭션에서 사용하는 데이터를 다른트랜잭션에서 접근 불가    

 

출처: www.youtube.com/watch?v=e9PC0sroCzc&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=24