트랜잭션

IT위키
PE가즈아 (토론 | 기여)님의 2019년 8월 25일 (일) 14:38 판
Transaction

정의

  • 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위
  • 한꺼번에 수행되어야 할 일련의 연산

트랜잭션 특성

줄여서 ACID라고 한다.
  • 원자성(Atomicity)
  • 일관성(Consistency)
  • 독립성(Isolation)
  • 영속성(Durability)

트랜잭션 병행제어

  • 병행제어의 목적
    • 데이터베이스 일관성 유지
  • 트랜잭션 동시접근 시 발생 가능한 현상
    • Dirty Write
    • Dirty Read
    • Non-Repeatable Read
    • Phantom Read
  • 트랜잭션 고립화 수준(SQL92)
    • 레벨0~레벨3
  • 병행제어 실패 시 발생 가능한 현상
    • 갱신분실
    • 현황파악오류
    • 모순성
    • 연쇄복귀
  • 병행제어 기법
    • 로킹(Locking)
    • 타임스탬프(Time Stamp)
    • 낙관적 검증
  • 상세 내용은 트랜잭션 병행제어 문서 참조

복구(Recovery)

트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업

장애의 유형

  • 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황
  • 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황
  • 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황

로그 파일

  • 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스
  • 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 존재
  • 로그의 구조: <트랜잭션 번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값>
  • 로그의 타입: START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등 트랜잭션의 연산 타입
  • 로그파일을 이용한 복구
    • 로그파일에 트랜잭션의 시작(START)와 종료(COMMIT)이 있는 경우 REDO 수행
    • 로그파일에 트랜잭션의 시작(START)는 있고 종료(COMMIT)은 없는 경우 UNDO 수행

회복 기법

  • 지연갱신 회복 기법
    • 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장
    • 커밋이 발생하기 전까진 데이터베이스에 기록하지 않음
    • 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음
  • 즉시갱신 회복 기법
    • 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록
    • 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요

그 외 회복 기법

  • 체크포인트(Checkpoint) 회복 기법
  • 그림자 페이징(Shadow Paging) 회복 기법
  • 미디어(Media) 회복 기법