ACID

김상진 ·2024년 12월 25일
0

CS

목록 보기
25/30

ACID 특성: 데이터베이스 트랜잭션의 안전성 보장

데이터베이스 트랜잭션의 ACID는 다음 네 가지 속성의 약자로, 트랜잭션이 안전하고 신뢰성 있게 처리됨을 보장합니다.


1. 원자성 (Atomicity)

트랜잭션은 "전부 성공"하거나 "전부 실패"합니다.
트랜잭션 내부의 모든 작업이 완전히 실행되거나, 하나라도 실패하면 모든 작업이 취소됩니다.

예시

  • 계좌 이체 트랜잭션:
    1. A 계좌에서 3000원 출금
    2. B 계좌에 3000원 입금
      만약 2번 과정에서 오류가 발생하면 1번 과정 또한 취소됩니다.

2. 일관성 (Consistency)

트랜잭션 완료 후에도 데이터베이스는 항상 "일관된 상태"를 유지합니다.
트랜잭션은 데이터베이스가 정의한 제약조건이나 규칙을 위반할 수 없으며, 위반 시 롤백됩니다.

예시

  • 제약조건: "잔고는 음수일 수 없다."
    → 트랜잭션이 실행되더라도 이 규칙이 항상 보장됩니다.

3. 격리성 (Isolation)

동시에 실행되는 트랜잭션은 서로 독립적으로 실행됩니다.
트랜잭션 중간의 결과가 다른 트랜잭션에 영향을 미치지 않도록 보장하며, 외부에서는 트랜잭션 완료 전까지 중간 상태를 볼 수 없습니다.

예시

  • 계좌 이체 작업 중
    A 계좌의 잔고와 B 계좌의 잔고 총합이 10,000원이지만,
    중간 단계에서는 총합이 달라질 수 있습니다.
    하지만 다른 트랜잭션에서는 항상 10,000원으로 보장됩니다.

4. 지속성 (Durability)

성공적으로 완료된 트랜잭션은 영구적으로 반영됩니다.
시스템 장애가 발생하더라도 성공적으로 실행된 트랜잭션 결과는 손실되지 않습니다.

예시

  • 로그 기록
    트랜잭션 성공 시 데이터는 로그에 저장되고, 장애 발생 시 이 로그를 사용해 데이터베이스를 복구합니다.

결론

ACID 속성은 데이터베이스 트랜잭션이 안정적이고 신뢰성 있게 작동하도록 보장합니다. 이를 통해 데이터 무결성과 시스템 신뢰성을 유지할 수 있습니다.


출처 및 참고자료

profile
알고리즘은 백준 허브를 통해 github에 꾸준히 올리고 있습니다.🙂

0개의 댓글

관련 채용 정보