Updated:

less than 1 minute read

개요

  • 데이터베이스 트랜잭션이 안전하게 수행됨을 보장하기 위한 성질
  • A(Atomicity/원자성), C(Consistency/일관성), I(Isolation/격리성), D(Durability/지속성)


원자성

  • 하나의 트랜잭션내의 연산들이 ‘모두 성공’ 혹은 ‘모두 실패’함을 의미
  • 예시
    • 계좌이체 시 ‘금액 감소’와 ‘금액 증가’가 모두 성공하거나 실패해야지 일부만 성공/실패하는 것은 맞지 않음


일관성

  • 트랜잭션이 성공했을 때 제약이나 규칙들이 유지되어야함을 의미
  • 예시
    • 고객 정보에 전화번호가 반드시 있어야 한다는 제약사항이 있다면 트랜잭션 수행후에도 제약사항을 유지해야 성공


격리성

  • 하나의 트랜잭션은 격리되어 연산 중간에 다른 트랜잭션의 연산이 간섭하지 않음을 의미
  • 트랜잭션이 동시에 수행될 때와 순차적으로 수행될 때의 상태가 동일
  • 트랜잭션내의 연산중인 데이터를 트랜잭션 밖에서 볼 수 없음


지속성

  • 성공한 트랜잭션은 영구적으로 반영되어야 함을 의미
  • 예시
    • 계좌이체가 성공한 이후에는 로그 등을 남겨 데이터베이스에 에러가 발생해도 계좌이체 내역이 유지되어야 함
    • 반대로 계좌이체 로그가 기록되기 전에 데이터베이스에 에러가 발생하면 롤백