스물두줄

컴퓨터시스템응용기술사 · 데이터베이스 및 데이터 처리

트랜잭션 회복

트랜잭션 회복은 장애 뒤에도 데이터를 일관된 상태로 되돌리는 DBMS 기법이다. 은행 이체 도중 정전이 나도 돈이 사라지거나 두 번 빠지지 않게 한다. 핵심은 원자성과 지속성을 지키는 것이다. REDO는 커밋된 트랜잭션의 변경을 새 값으로 다시 반영하는 연산이다. 버…

주요 장면

  1. 0:02 트랜잭션 회복이란
  2. 0:18 REDO와 UNDO
  3. 0:41 로그 선행 기입
  4. 1:03 재시작 복구 3단계
  5. 1:39 그림자 페이징과 비교
  6. 2:12 체크포인트와 복구 범위
  7. 2:33 핵심 정리

대본

트랜잭션 회복이란

트랜잭션 회복은 장애 뒤에도 데이터를 일관된 상태로 되돌리는 DBMS 기법이다.

은행 이체 도중 정전이 나도 돈이 사라지거나 두 번 빠지지 않게 한다.

핵심은 원자성과 지속성을 지키는 것이다.

REDO와 UNDO

REDO는 커밋된 트랜잭션의 변경을 새 값으로 다시 반영하는 연산이다.

버퍼에만 있던 갱신이 디스크에 빠졌을 때 지속성을 보장한다.

UNDO는 완료되지 않은 트랜잭션의 변경을 이전 값으로 되돌리는 연산이다.

버퍼가 먼저 디스크에 기록된 경우 UNDO로 원자성을 보장한다.

로그 선행 기입

WAL은 데이터 페이지를 쓰기 전에 그 변경의 로그를 먼저 기록하는 원칙이다.

로그는 추가만 하는 구조이며 안정 저장장치에 기록되어야 한다.

로그 레코드에는 트랜잭션 번호, 데이터 항목, 이전 값, 새 값이 들어간다.

이 원칙이 지켜져야 REDO와 UNDO가 가능하다.

재시작 복구 3단계

재시작 복구는 분석, REDO, UNDO 순서로 진행한다.

분석 단계는 마지막 체크포인트부터 로그 끝까지 정방향으로 읽는다.

그 결과로 REDO 목록과 UNDO 목록이 만들어진다.

커밋 로그가 있는 트랜잭션은 REDO 대상, 시작 로그만 있으면 UNDO 대상이다.

그림자 페이징과 비교

그림자 페이징은 로그를 쓰지 않고 페이지 사본으로 회복하는 방식이다.

갱신 대상 페이지를 복사해 그림자 페이지로 두고, 변경은 복사본에만 한다.

커밋 시 그림자 페이지 테이블의 포인터를 새 페이지로 원자적으로 바꾼다.

장애가 나면 이전 포인터를 그대로 쓰면 되므로 UNDO가 필요 없다.

체크포인트와 복구 범위

체크포인트는 로그와 데이터를 동기화한 시점을 로그에 기록하는 작업이다.

체크포인트 이전의 완료된 변경은 이미 디스크에 반영되어 있다.

그래서 체크포인트 이후 로그만 REDO와 UNDO 대상으로 삼는다.

이전 로그를 모두 재실행한다고 쓰면 감점 요인이 된다.

핵심 정리

정리하면 트랜잭션 회복은 로그와 체크포인트로 원자성과 지속성을 지킨다.

커밋된 것은 REDO로 다시 반영하고, 미완료된 것은 UNDO로 되돌린다.

시험에서는 REDO와 UNDO의 대상을 구분하는 것이 핵심이다.

같은 장의 영상