데이터 무결성을 지키는 방법: 트랜잭션과 ACID 핵심 정리

Sue·2025년 6월 10일
0
post-thumbnail

🔁 1. 트랜잭션(Transaction)이란?

✔ 정의

트랜잭션이란 데이터베이스에서 하나의 작업 단위를 의미하며, 여러 개의 SQL 명령이 하나의 묶음으로 실행되는 것입니다.

이 묶음은 모두 성공하거나, 모두 실패해야 합니다.

✔ 왜 필요한가?

데이터를 일관성 있게 유지하기 위해서입니다. 중간에 작업이 일부만 성공하면 데이터가 엉망이 되기 때문이죠.

✔ 예시

은행 계좌 이체 상황:
1. A의 계좌에서 10만원 차감
2. B의 계좌에 10만원 입금

이 둘이 동시에 성공해야 의미가 있습니다. 하나만 성공하면 문제가 생기죠. 이걸 하나의 트랜잭션으로 묶습니다.

✔ Python (psycopg2) 예시

try:
    cur.execute("UPDATE accounts SET balance = balance - 100000 WHERE name = 'A'")
    cur.execute("UPDATE accounts SET balance = balance + 100000 WHERE name = 'B'")
    conn.commit()  # 성공 시 적용
except Exception as e:
    conn.rollback()  # 실패 시 모두 취소

✅ 2. ACID란?

트랜잭션이 지켜야 할 4가지 원칙을 말합니다.

약자설명
AAtomicity (원자성)모든 작업이 전부 수행되거나 전혀 수행되지 않아야 함
CConsistency (일관성)트랜잭션 전후의 데이터 상태가 논리적으로 일관되어야 함
IIsolation (고립성) 동시에 실행되는 트랜잭션이 서로 영향을 주지 않도록 처리되어야 함
DDurability (지속성) 트랜잭션이 성공하면 결과는 영구적으로 저장되어야 함 (시스템 장애에도 유지)

🔍 예시로 이해하기: ACID in Action

상황: 쇼핑몰에서 결제 처리
1. A 고객이 상품 구매 버튼 클릭
2. 상품 재고 감소
3. 결제 내역 추가
4. 배송 요청 생성

이 모든 과정이 트랜잭션이고, 다음과 같은 규칙이 적용됩니다:

  • A: 중간에 오류 나면 전체 롤백 (예: 결제는 되었는데 배송은 안 되는 상황 방지)
  • C: 트랜잭션 전후에 상품 수량이 논리적으로 맞아야 함
  • I: 동시에 여러 고객이 주문해도 서로 간섭하지 않음
  • D: 트랜잭션 완료 후 서버 꺼져도 데이터는 손실되지 않음

🧩 정리

개념의미핵심 목적
트랜잭션작업 단위를 하나로 묶은 것모두 성공 or 모두 실패 처리
ACID트랜잭션의 4가지 필수 조건정확성, 신뢰성, 일관성 보장
profile
AI/ML Engineer

0개의 댓글