트랜잭션
하나의 작업 단위입니다. 전부 성공하거나 전부 실패합니다.
예시: 계좌 이체
-- A가 B에게 10만원 이체
UPDATE accounts SET balance = balance - 100000 WHERE user = 'A';
UPDATE accounts SET balance = balance + 100000 WHERE user = 'B';
둘 중 하나만 실행되면 문제가 생깁니다.
A에서 빠짐 → 서버 다운 → B에는 안 들어감
→ 10만원 증발!
트랜잭션으로 묶으면
START TRANSACTION;
UPDATE accounts SET balance = balance - 100000 WHERE user = 'A';
UPDATE accounts SET balance = balance + 100000 WHERE user = 'B';
COMMIT; -- 둘 다 성공하면 확정
START TRANSACTION;
UPDATE accounts SET balance = balance - 100000 WHERE user = 'A';
-- 에러 발생!
ROLLBACK; -- A에서 빠진 것도 취소됨
ACID 특성
| 특성 | 설명 |
|---|---|
| Atomicity (원자성) | 전부 성공 or 전부 실패 |
| Consistency (일관성) | 실행 전후 데이터 무결성 유지 |
| Isolation (격리성) | 트랜잭션끼리 서로 영향 X |
| Durability (지속성) | 커밋되면 영구 저장 |
핵심
트랜잭션 = 쪼갤 수 없는 작업 묶음
성공 → COMMIT (확정)
실패 → ROLLBACK (취소)