PE Notes · DB
데이터 무결성 회복기법
트랜잭션·시스템·미디어 장애와 WAL, UNDO/REDO, 체크포인트, 그림자 페이징, 즉시·지연 갱신, RPO/RTO 백업을 정리합니다.
커밋한 결과는 정전 뒤에도 남아야 하고(지속성), 끝나지 않은 작업은 없던 일이 되어야 합니다(원자성). 회복은 그 두 약속을 디스크와 로그로 지키는 일입니다.
장애와 WAL
| 장애 | 원인 | 범위 |
|---|---|---|
| 트랜잭션 | 논리 오류, 제약, 데드락 | 그 트랜잭션 |
| 시스템 | OS, 정전, 소프트웨어 | 메모리 손실, 디스크는 남음 |
| 미디어 | 디스크 파괴 | 저장본 손실 |
은 데이터 페이지를 디스크에 쓰기 전에 로그를 먼저 남깁니다. 레코드에는 LSN, 트랜잭션, 연산, 객체, 이전값, 이후값이 들어갑니다. 는 이전값으로 되돌리고, 는 이후값으로 다시 적용합니다.
재시작은 보통 분석 → REDO → UNDO입니다. 체크포인트 이후 로그에서 BEGIN만 있고 COMMIT이 없으면 UNDO 대상, COMMIT까지 갔는데 디스크에 덜 반영됐으면 REDO 대상입니다.
체크포인트와 그림자 페이징
는 더티 페이지를 디스크에 밀어 넣고, 활성 트랜잭션 목록과 함께 시작점을 찍습니다. 회복은 그 이후 로그만 보면 됩니다.
그림자 페이징은 원본 페이지 테이블을 두고 수정은 그림자 쪽에만 합니다. 커밋이면 포인터를 바꾸고, 실패면 그림자를 버립니다. UNDO 로그는 줄지만 테이블 관리와 단편화가 남습니다.
| 축 | 즉시 갱신 | 지연 갱신 |
|---|---|---|
| 반영 시점 | 수행 중 | 커밋 때 |
| UNDO | 필요 | 커밋 전엔 DB 미변경 |
| REDO | 필요 | 필요 |
| 현장 | 대부분 RDBMS | 특수 환경 |
현대 엔진의 표준 절차는 입니다. WAL을 지키고, REDO로 장애 직전을 재현한 뒤 UNDO로 미완료만 되돌립니다.
백업과 RPO·RTO
는 잃어도 되는 데이터 시간, RTO는 다시 켜기까지 허용 시간입니다.
| 전략 | RPO | RTO |
|---|---|---|
| 풀 백업 | 백업 주기 | 길다 |
| 증분 백업 | 짧다 | 중간 |
| 시점 복구(WAL) | 거의 0 | 중간 |
| 동기 HA 복제 | 0에 가깝다 | 초 단위 |
미디어 장애는 로그만으로 부족하고, 백업본과 아카이브 로그가 필요합니다.