본문 바로가기
Data Science/SQL

[SQL] 트랜잭션과 동시성 제어, 핵심 요약

by 에르모사 쩐뉴 2026. 2. 28.

1. 트랜잭션의 개념 및 특징 (ACID) ★★★

트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위다.

특징 설명 비고
원자성 (Atomicity) 트랜잭션의 연산은 모두 반영되거나, 전혀 반영되지 않아야 함 (All or Nothing) 회복(Recovery) 관련
일관성 (Consistency) 실행 완료 후 DB는 언제나 일관된 상태를 유지해야 함 무결성 제약 조건 등
고립성 (Isolation) 실행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음 병행 제어 관련
영속성 (Durability) 성공 완료된 결과는 시스템 장애가 발생해도 영구적으로 보존됨 회복 관련

2. 트랜잭션의 상태 ★

  • Active (활동): 실행 중인 상태
  • Partially Committed (부분 완료): 마지막 연산 종료 후 Commit 직전 상태
  • Committed (완료): 성공적 종료 후 변경 내용 DB 반영
  • Failed (실패): 장애 발생으로 중단된 상태
  • Aborted (철회): 트랜잭션 취소 및 수행 전 상태로 복구(Rollback)

3. 병행 제어 (Concurrency Control) ★★★

다수의 트랜잭션이 동시에 실행될 때 일관성을 해치지 않도록 제어하는 기술이다.

병행 제어 미비 시 문제점 (반드시 암기)

  1. 갱신 분실 (Lost Update): 이전 트랜잭션의 수정 내용이 덮어써짐
  2. 모순성 (Inconsistency): 여러 트랜잭션이 동시 실행되어 데이터 불일치 발생
  3. 연쇄 복구 불가능 (Cascading Rollback): 한 트랜잭션 취소 시 다른 트랜잭션도 취소해야 하는데 불가능한 상황
  4. 비완료 의존성 (Dirty Read): 실패한 트랜잭션이 쓴 데이터를 다른 트랜잭션이 읽음

병행 제어 기법

  • 로킹 (Locking): 데이터에 접근 전 Lock을 획득하고 종료 후 Unlock
    • 2단계 로킹 규약 (2-Phase Locking): 확장 단계(Lock만 가능)와 수축 단계(Unlock만 가능)로 구분하여 직렬성 보장. 교착상태(Deadlock) 발생 가능성 존재.
  • 타임스탬프 순서 (Timestamp Ordering): 시스템이 부여한 시간표(Timestamp) 순서대로 실행. 교착상태 미발생.
  • 낙관적 검증 (Optimistic Validation): 일단 실행 후 종료 시점에 검증.
  • 다중 버전 병행 제어 (MVCC): 데이터의 여러 버전을 관리하여 판독 성능 향상.

4. 회복 (Recovery) ★★

트랜잭션 실행 중 장애 발생 시 이전의 일관된 상태로 되돌리는 기법.

로그 기반 회복 기법

  • 지연 갱신 (Deferred Update): 트랜잭션 완료(Commit) 전까지 DB에 기록하지 않고 로그에만 저장. Redo만 가능.
  • 즉시 갱신 (Immediate Update): 연산 중 즉시 DB에 반영. 로그를 통해 Redo와 Undo 모두 가능.

주요 명령어

  • Redo (재실행): 로그를 이용해 실패한 트랜잭션 결과를 재적용 (Commit된 경우)
  • Undo (취소): 로그를 이용해 변경된 내용을 원래대로 복구 (Commit 안 된 경우)

5. 트랜잭션 고립 수준 (Isolation Level) ★★

표준 SQL(ISO/ANSI)에서 정의한 고립 수준이다. 아래로 갈수록 고립성 강도와 오버헤드가 증가한다.

  1. Read Uncommitted: 커밋되지 않은 데이터도 읽음 (Dirty Read 발생)
  2. Read Committed: 커밋된 데이터만 읽음 (대부분 DB 기본 설정)
  3. Repeatable Read: 트랜잭션 내 동일 데이터 재판독 시 결과 동일 보장
  4. Serializable: 가장 엄격. 트랜잭션 직렬화 실행

특히 ACID 특징, 병행 제어 미비 시의 문제점, 2단계 로킹 규약은 매년 출제되는 단골 문제다.