솜은 코튼
[DB] 그림자 페이징 기법 본문
그림자 페이징 기법
.
로그를 이용하지 않는 회복 기법으로 그림자 페이징이 있다.
데이터베이스는 페이지(page)라고 하는 일정 크기의 블록으로 나뉘어 디스크에 저장된다.
이 페이지들은 특별한 순서로 디스크에 저장되어야 하는 것은 아니지만
i번째 페이지를 디스크에서 찾을 수 있는 방법이 있어야 한다.
이 기능은 보통 '페이지 테이블' 또는 '디렉터리'가 지원하고 있다.
페이지 테이블에는 데이터베이스 페이지에 대응하는 n개의 엔트리가 있고
각 엔트리는 디스크에 있는 해당 페이지를 가리키는 포인터를 포함하고 있다.
트랜잭션을 실행하는 동안 '현 페이지 테이블'과 '그림자 페이지 테이블'을 유지하는 것이다.
처음 트랜잭션이 실행되면 두 페이지 테이블은 똑같지만
실제 실행하는 과정에서는 현 페이지 테이블만 사용하고 그림자 페이지 테이블은 사용하지 않는다.
즉, 트랜잭션이 Write 연산을 실행할 때 현 페이지 테이블만 변경하고
Input와 Output 연산을 위해 디스크에 있는 데이터베이스 페이지를 찾을 때도
현 페이지 테이블만 사용한다.
따라서 그림자 페이지는 변하지 않고 트랜잭션 실행 직전 상태를 유지한다.
그림자 회복 방법은 트랜잭션의 첫 번째 변경 연산을 수행하기 직전의 상태를
그림자 페이지 테이블로 유지해 두었다가
시스템 붕괴나 트랜잭션 철회의 경우에 간단히 실행 직전 상태로 복귀시키는 방법이다.
또한 성공적으로 완료되면 현 페이지 테이블을 새로운 그림자 페이지 테이블로 대체시켜
트랜잭션의 변경 연산을 디스크에 간단히 반영할 수 있다.
그림자 페이지 테이블은 비소멸 저장장치(디스크)에 저장시켜야 한다.
시스템이 붕괴된 뒤 다시 작동되면 그림자 페이지 테이블을 메인 메모리에 복사해 트랜잭션을 실행한다.
그림자 페이지 테이블은 시스템이 붕괴될 때 활동 중인 트랜잭션을 실행하기
바로 직전 데이터베이스 페이지를 유지하는 것이 보장된다.
하여 철회는 자동적으로 되고 Undo 연산도 필요없다.
* 해당 글은 '데이터베이스 시스템' 책을 참고하여 작성하였습니다. 출처: 데이터베이스 시스템 (이석호)
'DB' 카테고리의 다른 글
[DB] 트랜잭션 스케줄 (직렬 가능 스케줄) (0) | 2023.06.02 |
---|---|
[DB] 병행 제어 (동시 공용 문제점) (0) | 2023.06.02 |
[DB] 검사시점 회복 (0) | 2023.06.02 |
[DB] 로그 이용 회복 (즉시 갱신 회복) (0) | 2023.06.02 |
[DB] 로그 이용 회복 (데이터베이스 로그, 지연 갱신의 회복) (0) | 2023.06.02 |