[데이터베이스] DBMS 회복 시스템

December 04, 2023


회복 시스템이란

Failure classification

  • 트랜잭션 failure

    • Logical error: 프로그램 오류로, overflow, bad input 등등
    • System error: deadlock
  • System crash

    • DBMS나 OS의 실행 중지
    • volatile memory의 내용 파쇄
  • Media failure

    • Non-volatile memory의 내용 파손 (e.g. HDD 파손)

Storage 구조

Storage Types Description Examples
Volatile storage power outage or system crash 발생시 데이터가 파손됨 Main memory, Cache memory
Nonvolatile storage system crash에도 데이터 보존 Hard disk, Magnetic tape
Stable storage 어느 형태의 failure에도 데이터 보존 software적 replication으로 구현

Recovery & Atomicity

Buffer policy

STEAL

  • STEAL은 트랜잭션에 의해 수행 중인 변경 사항이 디스크에 기록 가능
  • ¬ STEAL은 트랜잭션에 의해 수행 중인 변경 사항이 디스크에 기록되면 안됨

FORCE

  • FORCE는 완료한 트랜잭션의 결과를 디스크에 반드시 기록하도록 함
  • ¬ FORCE는 완료한 트랜잭션의 결과를 디스크에 반드시 기록할 필요 없음

Recovery operations

  • UNDO: 실행 중인 트랜잭션의 결과를 디스크에서 삭제
  • REDO: 이전에 완료한 트랜잭션재실행

recovery-operation

Log-based Recovery

Update log record

  • Transaction이 update 연산을 실행할 때마다 생성
    • Transaction 식별자, Data 식별자
    • Old value, new value (로그 방식에 따라 선택적)

지연 갱신

  • commit시 쓰기 (deferred)
  • ¬ FORCE
  • UNDO 불필요 -> old value 기록 필요 X

즉시 갱신

  • 즉시 쓰기(commit 전), (immediate)
  • FORCE
  • UNDO, REDO 모두 필요

Checkpoints

  • 어느 로그 레코드부터 조사할 것인지?

  • checkpoint 동안 일반 트랜잭션은 실행 중단됨

  • checkpoint 시점과 commit 시점에 따른 수행 동작 예시

checkpoint

ARIES

  • Fine-Granularity locking 지원 (레코드 레벨의 lock)
  • Partial rollback 지원
  • Write Ahead Logging 이용 (로그를 먼저, 다음 write)

기본 개념

  • Log Sequence Number (LSN) 이용
  • Index에 대한 logical undo 지원, old, new 모두 쓰지 않고 operation만 저장
  • Flexible buffer management: STEAL & ¬ FORCE
  • Fuzzy checkpoint 지원
    • 트랜잭션 중간에 checkpoint 가능

Media Recovery

  • 주기적인 백업(dump)이 필요

Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby