[DB] Transaction ACID

cabbage·2023년 2월 13일
0

Database

목록 보기
2/6
post-thumbnail

ACID 프로퍼티란?

  • 관계형 DB에서 트랜잭션은 반드시 atomic(원자적), consistent(일관적), isolated(격리된), durable(지속적)이어야 한다.
  • 이 프로퍼티들을 ACID라고 한다.
  • ACID 프로퍼티들은 데이터베이스 트랜잭션이 안정적으로 처리되도록 해준다.

Atomicity(원자성)

  • 원자성이란 트랜잭션이 전부 또는 아무것도 아님(all or nothing)을 의미하는 용어이다.
  • 트랜잭션이 커밋되면 데이터베이스는 트랜잭션을 성공적으로 끝내거나 트랜잭션을 롤백하여 데이터베이스를 원래 상태로 되돌리거나 둘 중 하나이다.
  • 온라인 예약 애플리케이션의 경우
    • 예약을 좌석 예약과 결제로 분리할 수 있다.
    • 좌석 예약과 결제를 같은 트랜잭션에서 처리하여 예약이 완료되었다는 것을 트랜잭션이 보장할 수 있다.
    • 좌석 예약이나 결제가 실패한다면 전체 트랜잭션은 롤백된다.

Consistency(일관성)

  • 트랜잭션을 사용하는 장점 중 하나는 트랜잭션의 성공 여부에 상관 없이 데이터 무결성이 유지된다는 것이다.
  • 트랜잭션은 데이터베이스 엔진에 의해 허가된 방식으로만 관련 데이터를 변경할 수 있다.
  • 이 점은 데이터의 일관성을 항상 유지해준다.

Isolation(격리성)

  • 동시에 여러 트랜잭션이 실행되는 경우, 각각의 트랜잭션은 동시에 실행되는 다른 트랜잭션에 영향을 주지 않고 독립적으로 유지되어야 한다.
  • 대부분의 DB 시스템에서 트랜잭션의 순서를 미리 알 수 없다.
  • 대신 트랜잭션들은 병렬로 실행된다.
  • 한 트랜잭션의 결과가 다른 트랜잭션의 결과에 영향을 미치지 않도록 데이터베이스 locking(잠금)이 사용된다.

Durability(지속성)

  • 지속성은 성공적으로 수행된 트랜잭션 커밋이 영원히 지속된다(유지된다)는 것을 의미한다.
  • 성공한 트랜잭션 커밋을 유지하기 위해 각각의 트랜잭션에 대한 항목이 데이터베이스 트랜잭션 로그에 추가된다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글