본문 바로가기
SQL Professional

[독학! SQLP] 트랜잭션

by 개발자의 2025. 8. 20.

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