Coffee Chat Brewing AI Knowledge

eng kor

데이터베이스 4: 트랜잭션

트랜잭션 (Transaction)

DB의 상태를 변환하는 논리적 기능을 수행하기 위한 작업의 단위 혹은 일련의 연산들.

  • DB 시스템에서 병행제어 및 회복 작업 시 처리되는 작업의 논리적 단위.
  • 사용자가 시스템에 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위.

트랜잭션의 특성

  • Atomicity (원자성)

    : 트랜잭션 연산은 DB에 모두 반영되도록 완료(commit)되던지, 전혀 반영되지 않도록 복구(rollback)됨.

  • Consistency (일관성): 트랜잭션이 성공적으로 완료되면 DB 상태는 언제나 일관성 있는 상태가 됨.
  • Isolation (독립성, 격리성, 순차성): 트랜잭션이 병행 실행되는 경우 다른 트랜잭션의 연산에 끼어들 수 없음.
  • Durability (영속성, 지속성): 트랜잭션이 성공적으로 완료되면 그 결과는 시스템이 고장나더라도 영구적으로 반영됨.

CRUD 분석

프로세스와 테이블 간 CRUD 매트릭스를 만들어 트랜잭션을 분석하는 것.

  • CRUD 분석을 통해 트랜잭션이 많이 몰리는 테이블을 파악할 수 있어, 디스크 구성 시 유용.
  • CRUD 매트릭스 구성: 각 쉘에 Create, Read, Update, Delete의 앞 글자가 들어감.


병행제어 (Concurrency Control)

여러 개의 트랜잭션을 병행 수행할 때, 동시 실행되는 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션 간 상호 작용을 제어하는 것.

  • 종류: 로킹, 타임 스탬프 순서, 최적 병행수행, 다중 버전 기법

로킹 (Locking)

트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 잠금(Lock)을 요청하고, Lock이 허락되어야만 해당 로킹 단위를 액세스할 수 있도록 하는 병행제어 기법.

  • 주요 데이터의 액세스를 상호 배타적으로 하게 됨.
  • 로킹 단위 (Locking Granularity): 한꺼번에 로킹할 수 있는 객체의 크기.
    • 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있음.

      로킹 단위 크기 Lock 수 관리 난이도 병행성 수준
      적음 쉬움 낮아짐
      작음 많음 어려움 높아짐

타임 스탬프 순서 (Time Stamp Ordering)

트랜잭션 실행 전에 시간표(Time stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 병행제어 기법. 직렬성 순서를 결정하기 위해 트랜잭션 처리 순서를 미리 선택하는 기법 중 가장 보편적인 방법.


회복 (Recovery)

트랜잭션 수행 중 장애가 발생하여 DB가 손상되었을 때, 손상되기 이전의 상태로 복구하는 작업.

  • 종류: 연기 갱신 기법, 즉각 갱신 기법, 그림자 페이지 대체 기법, 검사점 기법

REDO와 UNDO

  • Redo (재시도): DB가 비정상적으로 종료되었을 때, 디스크 내 로그에 트랜잭션의 시작(start)과 완료(commit) 기록이 있는 트랜잭션들을 재작업함. → 로그를 이용해 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산.
  • Undo (취소): DB가 비정상적으로 종료되었을 때, 디스크 내 로그에 트랜잭션의 시작(start) 기록은 있지만 완료(commit) 기록은 없는 트랜잭션들이 변경한 내용을 모두 취소함. → 로그를 이용해 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경하는 연산.

즉각 갱신 기법 (Immediate Update)

트랜잭션이 데이터를 갱신(update)하면 트랜잭션이 부분 완료 되기 전이라도 즉시 실제 DB에 반영하는 방법.

  • 장애 발생 시 회복 작업을 대비해 갱신된 내용은 로그에 보관함.
  • Redo와 Undo 모두 사용 가능.