← 개념서모바일 버전
1과목 · 데이터 모델링의 이해·7

트랜잭션 (Transaction)

ACID 4성질, 트랜잭션 상태, 격리 수준, COMMIT/ROLLBACK/SAVEPOINT 구조를 정리합니다.

1. 트랜잭션이란

하나의 논리적 작업 단위. 여러 SQL이 한꺼번에 성공하거나 한꺼번에 취소되어야 하는 All-or-Nothing 묶음.

BEGIN;
UPDATE account SET balance = balance - 10000 WHERE id = 'A';
UPDATE account SET balance = balance + 10000 WHERE id = 'B';
COMMIT;

2. ACID

속성 의미
원자성(A) 모두 반영 또는 모두 취소
일관성(C) 트랜잭션 전후 규칙 만족
고립성(I) 동시 트랜잭션이 서로 간섭하지 않음
영속성(D) 커밋 결과는 장애 이후도 보존

3. 트랜잭션 상태

Active → Partially Committed → Committed / Failed → Aborted.

4. 제어 명령

명령 역할
COMMIT 변경 확정
ROLLBACK 변경 취소
SAVEPOINT name 중간 지점 저장
ROLLBACK TO name 이후 변경만 취소
BEGIN;
INSERT INTO orders VALUES (1, 100);
SAVEPOINT s1;
INSERT INTO orders VALUES (2, -50);
ROLLBACK TO s1;    -- 2번만 취소
COMMIT;

5. 격리 수준과 이상 현상

격리 수준 Dirty Non-Repeatable Phantom
READ UNCOMMITTED O O O
READ COMMITTED X O O
REPEATABLE READ X X 일부 O
SERIALIZABLE X X X
  • Dirty Read: 커밋 안 된 값 읽기.
  • Non-Repeatable: 같은 행 재조회 시 값 변경.
  • Phantom: 같은 조건 재질의 시 새 행 등장.

6. Auto vs Manual Commit

  • Oracle: 기본 수동.
  • MySQL/PostgreSQL: 기본 자동.

7. 자주 출제되는 포인트

  • ACID 네 글자.
  • SAVEPOINT + ROLLBACK TO.
  • 3가지 이상 현상과 격리 수준 매핑.
  • 영속성 = 커밋 후 장애 보존.
  • 일관성 = 규칙 만족 (같은 값 유지가 아님).

8. 요약 체크리스트

  • ACID를 한 줄씩 쓴다.
  • 트랜잭션 상태 전이를 그린다.
  • COMMIT/ROLLBACK/SAVEPOINT의 차이를 안다.
  • 격리 수준 매트릭스를 답한다.