Transaction 이란?

Max Kang·2022년 11월 21일
0

ACID

트랜잭션은 ACID 를 보장해야한다.

  • 원자성 Actomocity
    트랜잭션내 실행한 작업들은 모두 성공하거나, 실패시 실행전으로 돌아가야한다
  • 일관성 Consistency
    트랜잭션내 변경사항은 일관성있는 데이터베이스 상태를 유지 해야한다. 그럴 수 없다면, 해당 변경사항은 적용되면 안된다.
  • 격리성 Isolation
    동시에 실행되는 read/write 은 서로에게 영향을 미쳐서는 안된다.
    격리성은 동시성과 관련된 성능 이슈로인해 격리 수준을 선택할 수 있다.
  • 지속성 Durability
    트랜잭션간 발생한 변경사항은 기록되어야한다. 중간에 에러가 발생하여 실패할지라도 기록된 내용을 바탕으로 복구할 수 있어야한다.

트랜잭션 격리수준 Transaction Isolation Level

격리 수준DIRTY READNON-REPEATABLE READPHANTOM READ
READ UNCOMMITEDOOO
READ COMMITEDOO
REPEATABLE READO
SERIALIZABLE

DIRTY READ : 커밋하지 않는 데이터를 읽을 수 있다. 예를 들어, 트랜잭션1 이 데이터를 수정하는 도중에 커밋이되지 않았어도 트랜잭션2가 해당 데이터를 읽을 수 있다.
NON-REPEATABLEREAD : 트랜잭션이 같은 로우 데이터를 두번 읽었을때 다른 결과물을 받는 경우를 뜻한다. 만약 트랜잭션1이 어떤 로우를 읽고, 트랜잭션2 가 해당 로우를 업데이트 하거나 지우면, 트랜잭션1이 다시 읽었을때 다른 결과 값이 사라져버린 로우를 발견하게 된다.
PHANTOM READ : 반복적으로 같은 쿼리를 실행해도, 결과 집합이 달라지는 것이다.

profile
Software Engineer

0개의 댓글