트랜잭션 — ACID 4속성 & 격리 수준 4단계
Atomicity · Consistency · Isolation · Durability + READ UNCOMMITTED → SERIALIZABLE.
ACID 4속성은 필기 고정 1문항, 격리 수준 4단계와 3가지 이상 현상(Dirty/Non-repeatable/Phantom Read) 짝짓기가 실기 빈칸형으로 매회 등장. 영문 약어와 한글 의미를 모두 외워야 감점을 피할 수 있다.
트랜잭션(Transaction)은 "더 이상 쪼갤 수 없는 단위 작업"이다. 은행 이체처럼 출금·입금이 한 덩어리로 성공하거나 한 덩어리로 실패해야 하는 경우를 보장하기 위해 DBMS는 ACID 4가지 속성을 제공한다.
| 속성 | 영문 | 의미 |
|---|---|---|
| 원자성 | Atomicity | 전부 성공 OR 전부 실패 (부분 반영 금지) |
| 일관성 | Consistency | 실행 전·후 DB 제약 조건 유지 |
| 격리성 | Isolation | 동시 트랜잭션이 서로 간섭하지 않음 |
| 지속성 | Durability | 커밋된 결과는 장애 후에도 보존 |
격리 수준 4단계 — 낮은 순으로 READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE. 높을수록 안전하지만 성능 저하. ANSI SQL 표준.
| 격리 수준 | Dirty Read | Non-repeatable Read | Phantom Read |
|---|---|---|---|
| READ UNCOMMITTED | 가능 | 가능 | 가능 |
| READ COMMITTED | 차단 | 가능 | 가능 |
| REPEATABLE READ | 차단 | 차단 | 가능 |
| SERIALIZABLE | 차단 | 차단 | 차단 |
3가지 이상 현상 — ① Dirty Read: 커밋 안 된 값을 읽음. ② Non-repeatable Read: 같은 값을 두 번 읽었는데 다름(UPDATE 간섭). ③ Phantom Read: 같은 범위를 두 번 읽었는데 행 수가 다름(INSERT 간섭).
TCL 명령 — 트랜잭션 제어는 COMMIT(영속화), ROLLBACK(취소), SAVEPOINT(부분 되돌리기)의 3개 명령으로 수행. DDL(CREATE 등)은 자동 커밋되므로 ROLLBACK 불가.
트랜잭션의 ACID 4속성의 영문 머리글자를 풀어 쓰시오.
ANSI SQL 격리 수준 4단계를 낮은 순서로 쓰시오.
아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽을 수 있는 이상 현상의 이름은?
REPEATABLE READ 격리 수준은 Phantom Read까지 완전 차단한다.