본문 바로가기
컴퓨터공학/데이터베이스(database)

[Recovery] Fuzzy checkpointing

by 바코94 2020. 6. 4.

checkpoint를 만들 때 실행 중인 모든 트랜잭션을 중지하고 디스크에 버퍼의 값을 저장하게 된다. 트랜잭션을 중지하지 않고 checkpoint를 만드는 방법이 Fuzzy checkpointing이다.

 

fuzzy checkpointing

1. 잠깐 모든 트랜잭션을 중지한다.

2. <checkpoint L>을 log db 에 저장한다.

3. 업데이트된 버퍼 블락에 대해서 리스트 M을 만든다. dirty block에 대해 리스트를 만든 것이다. 

4. 1에서 중지된 트랜잭션을 다시 시작한다.

5. M에 대해서 디비 스토리지에 저장을 한다. 이 때, 버퍼의 블락이 업데이트 되면 안되도록 latch같은 것을 쓴다. WAL 규칙을 만족해야 한다.

6. checkpoint를 가리키는 last_checkpoint 를 방금 수행한 로그 레코드로 업데이트한다. 

 

 

6이 완료되기 전에 crash가 발생하면 L'을 가리키게 된다. L'가 복구 시작 지점이 된다.

 

 

'컴퓨터공학 > 데이터베이스(database)' 카테고리의 다른 글

[Recovery]ARIES algorithm  (0) 2020.06.05
[Recovery] Failure of Nonvolatile Storage  (0) 2020.06.04
[Recovery]Log-based recovery  (0) 2020.06.04
[Recovery] Log  (0) 2020.06.04
[Recovery]disk i/o  (0) 2020.06.03