솜은 코튼

[DB] 그림자 페이징 기법 본문

DB

[DB] 그림자 페이징 기법

솜.코 2023. 6. 2. 17:08

 

그림자 페이징 기법

.

 

 

로그를 이용하지 않는 회복 기법으로 그림자 페이징이 있다.

 

데이터베이스는 페이지(page)라고 하는 일정 크기의 블록으로 나뉘어 디스크에 저장된다.

이 페이지들은 특별한 순서로 디스크에 저장되어야 하는 것은 아니지만

i번째 페이지를 디스크에서 찾을 수 있는 방법이 있어야 한다.

 

이 기능은 보통 '페이지 테이블' 또는 '디렉터리'가 지원하고 있다.

 

 

페이지 테이블에는 데이터베이스 페이지에 대응하는 n개의 엔트리가 있고

각 엔트리는 디스크에 있는 해당 페이지를 가리키는 포인터를 포함하고 있다.

 

 

트랜잭션을 실행하는 동안 '현 페이지 테이블'과 '그림자 페이지 테이블'을 유지하는 것이다.

 

처음 트랜잭션이 실행되면 두 페이지 테이블은 똑같지만

실제 실행하는 과정에서는 현 페이지 테이블만 사용하고 그림자 페이지 테이블은 사용하지 않는다.

 

즉, 트랜잭션이 Write 연산을 실행할 때 현 페이지 테이블만 변경하고

Input와 Output 연산을 위해 디스크에 있는 데이터베이스 페이지를 찾을 때도

현 페이지 테이블만 사용한다.

 

따라서 그림자 페이지는 변하지 않고 트랜잭션 실행 직전 상태를 유지한다.

 

 

그림자 회복 방법은 트랜잭션의 첫 번째 변경 연산을 수행하기 직전의 상태를

그림자 페이지 테이블로 유지해 두었다가

시스템 붕괴나 트랜잭션 철회의 경우에 간단히 실행 직전 상태로 복귀시키는 방법이다.

 

또한 성공적으로 완료되면 현 페이지 테이블을 새로운 그림자 페이지 테이블로 대체시켜

트랜잭션의 변경 연산을 디스크에 간단히 반영할 수 있다.

 

그림자 페이지 테이블은 비소멸 저장장치(디스크)에 저장시켜야 한다.

 

시스템이 붕괴된 뒤 다시 작동되면 그림자 페이지 테이블을 메인 메모리에 복사해 트랜잭션을 실행한다.

그림자 페이지 테이블은 시스템이 붕괴될 때 활동 중인 트랜잭션을 실행하기

바로 직전 데이터베이스 페이지를 유지하는 것이 보장된다.

하여 철회는 자동적으로 되고 Undo 연산도 필요없다.

 

 

 

 

 

 

 

 

* 해당 글은 '데이터베이스 시스템' 책을 참고하여 작성하였습니다. 출처: 데이터베이스 시스템 (이석호)