새소식

DataBase

DB - ACID

  • -

ACID란?

ACID는 데이터베이스 트랜잭션이 안전하게 처리되기 위해 반드시 지켜야 하는 4가지 속성이다.


Atomicity (원자성)

트랜잭션 내 모든 작업이 완전히 성공하거나 완전히 실패해야 한다.

예시: 계좌이체 시 A계좌 출금과 B계좌 입금이 모두 성공하거나 모두 취소된다. 출금만 되고 입금 실패는 불가능하다.


Consistency (일관성)

트랜잭션 전후로 데이터베이스가 일관된 상태를 유지해야 한다.

예시: 쇼핑몰에서 주문 시 "재고수량 ≥ 주문수량" 규칙이 있다면, 재고 10개인 상품을 15개 주문하려고 하면 트랜잭션 자체가 거부된다. 트랜잭션이 완료되면 반드시 재고가 충분히 남아있는 상태가 보장된다.


Isolation (격리성)

동시 실행되는 트랜잭션들이 서로 영향 없이 독립적으로 실행되어야 한다.

예시: 콘서트 티켓 마지막 1장이 남았을 때 A와 B가 정확히 동시에 예매 버튼을 클릭했다. 격리성이 없으면 둘 다 "1장 남음"을 보고 둘 다 구매에 성공하는 문제가 발생한다. 격리성이 있으면 A의 트랜잭션이 끝날 때까지 B는 대기하고, A 구매 후 B는 "품절"을 확인한다.


Durability (지속성)

커밋된 트랜잭션은 시스템 장애 시에도 영구 보존되어야 한다.

설명: 데이터베이스는 트랜잭션 커밋 시 디스크에 즉시 기록한다(메모리가 아닌). WAL(Write-Ahead Logging)을 사용해 변경사항을 먼저 로그 파일에 저장하고, 서버가 다운되어도 로그 파일이 디스크에 남아있어서 재시작 시 복구할 수 있다. Mysql은 InnoDB 엔진이 이 기능을 기본 제공한다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.