포스트

ACID를 실무적으로 이해하기

ACID란

ACID는 트랜잭션의 신뢰성을 설명할 때 가장 먼저 나오는 네 가지 속성이다.

  • Atomicity
  • Consistency
  • Isolation
  • Durability

중요한 것은 용어를 암기하는 것이 아니라, 각 속성이 실제 운영 문제와 어떻게 연결되는지 이해하는 것이다.

Atomicity

전부 성공하거나 전부 실패해야 한다는 뜻이다.

예를 들어 계좌 이체에서 출금만 되고 입금이 안 되면 안 된다. 중간에 실패하면 전체를 되돌릴 수 있어야 한다.

Consistency

트랜잭션 전후로 데이터가 규칙을 만족해야 한다는 뜻이다.

  • 재고는 음수가 되면 안 됨
  • 외래키 제약이 깨지면 안 됨
  • 비즈니스 불변식이 유지돼야 함

여기서 말하는 일관성은 단순히 DB 제약뿐 아니라 애플리케이션 수준 규칙까지 포함해 생각해야 한다.

Isolation

동시에 실행되는 트랜잭션이 서로 간섭하지 않고, 충분히 독립적으로 보이도록 만드는 것이다.

이 속성이 실제로는 가장 어렵다. 읽기 일관성, 락, MVCC, 데드락, 팬텀 리드 같은 문제들이 모두 여기에 연결된다.

Durability

커밋된 결과는 장애가 나더라도 보존되어야 한다는 뜻이다.

이를 위해 DB는 redo log, fsync, checkpoint, 복구 메커니즘 등을 사용한다.

실무에서 중요한 점

ACID는 네 가지를 동시에 완벽히 공짜로 주는 마법 주문이 아니다. DB는 내부적으로 로그, 락, MVCC, 버퍼 관리 등 여러 비용을 감수하면서 이 속성들을 만족시키려 한다.

즉, ACID는 개념이면서 동시에 성능과 동시성의 trade-off 문제다.

정리

ACID는 트랜잭션을 설명하는 가장 기본적인 프레임이다. 다만 시험용 정의로 끝내지 말고, 롤백, 락, MVCC, redo/undo log, 복구 메커니즘 같은 실제 구현과 연결해서 이해해야 실무 감각이 생긴다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

댓글

아직 댓글이 없습니다