로그 기반 회복 기법: Difference between revisions

From CS Wiki
No edit summary
No edit summary
Line 1: Line 1:
[[분류:데이터베이스]]
'''''굵은 글씨'''''[[분류:데이터베이스]]
; 상위 문서 [[데이터베이스 회복]]
; 상위 문서 [[데이터베이스 회복]]


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


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


==== 구현 ====
==== 구현 ====

Revision as of 00:18, 6 October 2019

굵은 글씨

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

지연 갱신 회복 기법

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

특징

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

구현

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

지연 갱신 회복 기법.png

즉시 갱신 회복 기법

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

특징

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

구현

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

즉시 갱신 회복 기법.png