1. 개념 요약
- 트랜잭션(Transaction):→ ALL or NOTHING (원자성)
- DB에서 논리적으로 하나의 작업 단위를 구성하는 연산 집합
- 예시
- 은행 이체 (A 계좌 출금 + B 계좌 입금 → 둘 다 성공해야 함)
2. 트랜잭션의 4대 성질 (ACID)
| 성질 | 설명 | 포인트 |
| A (Atomicity, 원자성) | 모두 수행되거나 전혀 수행되지 않아야 함 | “원자 → 쪼갤 수 없다” |
| C (Consistency, 일관성) | 트랜잭션 전후 DB의 무결성이 유지 | 제약조건, 규칙 만족 |
| I (Isolation, 독립성) | 동시에 수행돼도 각 트랜잭션은 독립적 | “격리” |
| D (Durability, 영속성) | 커밋된 데이터는 영구적으로 보존 | 장애 발생해도 유지 |
3. 트랜잭션 제어 명령어
| 명령어 | 설명 |
| COMMIT | 트랜잭션 확정, 영구 저장 |
| ROLLBACK | 트랜잭션 취소, 원상 복구 |
| SAVEPOINT | 중간 저장점 설정 (부분 롤백 가능) |
| SET TRANSACTION | 격리 수준, 접근 모드 설정 |
4. 트랜잭션 격리 수준 (Isolation Level)
| 격리 수준 | 허용되는 현상 | 특징 |
| Read Uncommitted | Dirty Read 발생 | 가장 낮음 |
| Read Committed | Non-Repeatable Read 발생 | Oracle 기본 |
| Repeatable Read | Phantom Read 발생 | MySQL InnoDB 기본 |
| Serializable | 없음 | 가장 엄격, 동시성 ↓ |
- 현상 정의
- Dirty Read: 다른 트랜잭션의 미커밋 데이터 읽음
- Non-Repeatable Read: 같은 행을 두 번 읽을 때 값 달라짐
- Phantom Read: 같은 조건으로 조회 시 행 개수가 달라짐
'SQL Professional' 카테고리의 다른 글
| [독학! SQLP] 계층 쿼리 (0) | 2025.08.20 |
|---|---|
| [독학! SQLP] 서브쿼리 (3) | 2025.08.20 |
| [독학! SQLP] SQL 조인! (6) | 2025.08.20 |
| [독학! SQLP] 그룹핑 쿼리 (0) | 2025.08.20 |
| [독학! SQLP] 함수 정리! (0) | 2025.08.20 |