본문 바로가기
Study/CS

[DB] 트랜잭션

by _royJang 2022. 10. 4.

데이터를 저장하기 위해선 DB, File 저장, 등 많은 방법이 존재한다. 이 중에서 가장 많이 사용되는 것이 DB인데 그 큰 이유 중 하나가 트랜잭션이다.

트랜잭션이란?

보통 하나의 비지니스 로직은 하나의 데이터만을 다루는 경우는 적다. 1,2,3 이라는 데이터의 수정이 필요할 때 1과 2는 제대로 수정 됐지만 3이 어떠한 이유로 수정이 되지 않았다면 서비스는 큰 혼란을 맞이할 것이다.. 특히 결제와 같은 시스템은 서비스의 존망이 걸린 문제가 생기지 않을까?
이러한 이유로 1,2,3을 하나의 트랜잭션으로 묶어 관리하게 되는데 만일 과정 중 하나의 문제라도 생긴다면 트랜잭션이 일어나기 이전의 기존 상태로 되돌리게 된다(Roll Back). 반대로 모든 과정이 옳게 동작한다면 DB의 데이터 값을 수정하게 된다(Commit).

트랜잭션 ACID

ACID는 트랜잭션이 보장해야하는 네가지의 앞 이니셜을 딴 것이다.

  • Atomicity (원자성)
  • Consistency (일관성)
  • Isolation (격리성)
  • Durability (지속성)

Atomicity

트랜잭션 내에서 실행한 작업들은 마치 하나의 작업 처럼 모두 성공하거나 모두 실패하여야 한다.

Consistency

모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야한다.

Isolation

같은 데이터에 대한 트랜잭션이 서로에게 영향을 미치지 못하도록 격리해야 한다.

Durability

트랜잭션에 대한 기록이 어떻게든 남겨져야한다.


 

! Isolation의 경우 완벽한 대처를 하기 위해서는 동기적으로 처리할 수 밖에 없다. 그렇게 된다면 성능에 이슈가 생기게 되는데 이를 방지하기 위해 ANSI 표준은 격리 수준을 4단계로 나눠 관리할 수 있게 된다.
단계를 거칠수록 격리 수준이 높아지고 성능은 저하된다.

  1. READ UNCOMMITED
  2. READ COMMITTED
  3. REPEATABLE READ
  4. SERIALIZABLE