문제
데이터베이스 회복 기법 중 No-Force 정책과 Force 정책의 차이점을 설명하고, 각각의 정책에서 장애 발생 시 필요한 회복 연산(Redo/Undo)을 서술하시오.
정답
No-Force 정책은 트랜잭션이 커밋되더라도 변경된 더티 페이지를 즉시 디스크에 쓰지 않아도 되는 정책으로, 커밋된 트랜잭션의 변경사항이 디스크에 반영되지 않았을 수 있어 장애 시 Redo가 필요하다. Force 정책은 트랜잭션이 커밋될 때 해당 트랜잭션이 변경한 페이지를 반드시 디스크에 기록하는 정책으로, 커밋된 트랜잭션에 대해서는 Redo가 불필요하다. 한편 Undo의 필요 여부는 Force/No-Force가 아니라 Steal/No-Steal 정책에 의해 결정되며, Steal이면 미커밋 변경이 디스크에 기록될 수 있어 Undo가 필요하고 No-Steal이면 Undo가 불필요하다.
해설
No-Force/Force 정책은 트랜잭션 커밋 시점에 변경 페이지를 디스크에 강제로 기록할지 여부를 결정하는 버퍼 관리 정책이다. No-Force는 성능상 유리하지만 커밋된 변경이 디스크에 없을 수 있으므로 Redo가 필요하고, Force는 커밋 시 디스크 반영을 보장하므로 Redo가 불필요하다. 반면 Undo의 필요 여부는 Steal/No-Steal 정책에 따라 달라진다. Steal이면 미커밋 페이지가 디스크에 기록될 수 있어 Undo가 필요하고, No-Steal이면 Undo가 불필요하다.