반응형
회복 기법
트랜잭션 처리 중 장애(시스템 다운, 디스크 오류 등) 발생 시, 데이터베이스를 정상 상태로 되돌리는 기법.
트랜잭션은 원자성(Atomicity)이라는 속성이 있어서, 전부 실행되거나, 하나도 실행되지 않아야 함.
이런 경우에 회복 기법을 통해 이전 정상 상태로 되돌리거나, 다시 실행해서 반영하는 역할을 함
회복 기법은 크게 방식에 따라 3가지 종류로 나뉘고,
이 안에서 Redo / Undo라는 동작이 사용이 됨.
+ 회복 기법의 핵심 도구: 로그(Log)
로그는 트랜잭션의 모든 작업 기록을 남긴 파일.
장애가 발생했을 때 로그를 보고 되돌리거나(Undo), 다시 실행(Redo)한다.
- 데이터 변경 전 값(Undo 관련 정보)
- 데이터 변경 후 값(Redo 관련 정보)
Redo 🔁, Undo ↩️
🔁 Redo 기법 (재시도)
- 트랜잭션이 커밋은 되었지만, 데이터베이스에 반영되지 않은 경우
- 로그에 있는 변경 후 값을 다시 반영함
T1: A = 100 → 200 → 커밋했는데 장애 발생
→ 로그 보고 A = 200으로 다시 저장 (Redo)
↩️ Undo 기법 (취소)
- 트랜잭션이 아직 커밋도 안 되었는데 장애가 발생한 경우
- 변경된 내용을 되돌림
T2: A = 100 → 50으로 변경했지만 커밋 전 장애
→ 로그 보고 A = 100으로 되돌림 (Undo)
회복 기법
로그 기반 회복 기법 (Log-Based Recovery)
장애가 발생했을 때 로그 파일(Log)을 참조하여 복구하는 가장 일반적인 방식
- 지연 갱신 회복 기법: 트랜잭션 완료되기 전까지 데이터 베이스에 기록하지 않는 기법
- redo 로그를 사용하여 변경 사항을 다시 적용
- 즉각 갱신 회복 기법: 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영
- 변경 사항이 커밋된 경우: Redo 로그를 사용하여 변경 사항을 다시 적용
- 변경 사항이 커밋되지 않은 경우: Undo 로그를 사용하여 변경 사항을 취소
체크포인트 회복 기법 (Checkpoint Recovery)
로그 기반 회복 기법의 성능을 향상시키기 위한 보조 기법
- 일정 시간마다 현재 트랜잭션 상태를 로그에 체크포인트로 기록
- 장애 발생 시, 체크포인트 이후의 로그만 사용해 복구 → 복구 시간 단축
- 혼자 쓰이기보단 로그 기반 회복 기법과 함께 사용
그림자 페이징 회복 기법 (Shadow Paging)
로그를 사용하지 않고, 페이지 단위로 그림자(백업) 복사본을 유지해서 복구하는 방식
- 데이터 페이지 변경 시, 원본을 보존하고 복사본에 작업
- 트랜잭션이 커밋되면 그림자 페이지를 실제 페이지로 전환
- 장애 시, 원본 페이지(그림자)를 그대로 사용하면 됨 → Undo 필요 없음
'데이터베이스 > 데이터베이스 기초 지식' 카테고리의 다른 글
병행 제어 기법 (0) | 2025.06.22 |
---|---|
IDC 코로케이션이란? (0) | 2023.10.06 |
ERD (ER Diagram)이란? (0) | 2023.09.26 |
트랜잭션 로그란? (0) | 2023.07.25 |
백로그 기반 지표란? (0) | 2023.07.25 |