로그 기반 회복 기법

From CS Wiki

굵은 글씨

상위 문서 데이터베이스 회복

지연 갱신 회복 기법[edit | edit source]

Deferred Update
트랜잭션이 부분 완료 상태에 이르기까지 발생한 모든 변경 내용을 로그 파일에만 저장하고, 데이터베이스에는 Commit이 발생할 때까지 저장을 지연하는 기법

특징[edit | edit source]

  • 데이터베이스 회복 과정에서 UNDO는 필요 없음 : 트랜잭션 복구 시 로그 파일 내용만 폐기
  • UNDO가 필요 없기 때문에 로그 레코드는 <트랜잭션 id, 데이터 아이템, 이후 값> 형식을 가짐

구현[edit | edit source]

  • 트랜잭션 단위가 종료될 때까지 디스크에 기록하는 출력 연산을 지연시키고, 데이터베이스 변경 내역을 로그에 보관
  • 트랜잭션 완료(Commit) 시 로그를 이용해 지연된 출력 연산(Redo) 수행
  • 트랜잭션이 실패할 경우 Undo 없이 로그 단순 폐기

지연 갱신 회복 기법.png

즉시 갱신 회복 기법[edit | edit source]

Immediate Update
트랜잭션 수행 도중 데이터를 변경하면 변경 정보를 로그 파일에 저장하고, 트랜잭션이 부분 완료되기 전이라도 모든 변경 내용을 즉시 데이터베이스에 반영하는 기법

특징[edit | edit source]

  • 트랜잭션 완료 이전에 수행한 갱신 연산은 미완료 갱신(Uncommitted Update)이라 함
  • 회복 시 로그 파일을 참조하여 Redo와 Undo 연산을 모두 실행해야 하기 때문에, 로그 레코드는 <트랜잭션 id, 데이터 아이템, 이전 값, 이후 값>형식을 가짐

구현[edit | edit source]

  • 트랜잭션 활성 상태에서 데이터 변경 결과를 로그와 데이터베이스에 반영
  • 회복 시 트랜잭션 실행 이전의 상태로 복구
  • 로그 파일을 참조하여 미완료된 변경에 대해 Undo를 우선 실행한 후, 완료된 변경에 대해 Redo 실행

즉시 갱신 회복 기법.png

같이 보기[edit | edit source]