스틸 정책과 포스 정책

비구름·2025년 6월 15일

데이터베이스

목록 보기
5/8

스틸 정책과 포스 정책을 알기 전

스틸 정책과 포스 정책이 만들어진 배경

데이터베이스는 이전 포스팅에서 강조한 디스크에 저장하는 시간을 생각하여 개발됩니다. 디스크와의 IO를 정말 중요하게 생각합니다. 따라서 페이지 캐싱 등을 통해 줄이고 트랜잭션의 언두, 리두등의 기능을 빠르게 수행하기 위해 디스크에 플러시되는 시점이 중요하게 되어 스틸 정책과 포스 정책이 만들어지게 되었습니다.

리두와 언두

모든 상태 변화는 이전 상태와 이후 상태의 조합으로 나타낼 수 있습니다. 이전 상태에서 리두 작업을 실행하면 이후 상태가 됩니다. 이후 상태에서 언두 작업을 실행하면 이전 상태가 됩니다.

플러시란

모든 변경사항을 디스크에 적용시키는 것을 플러시라고 합니다. 디스크와의 IO작업을 통해 적용까지 걸리는 시간이 커 데이터베이스는 매 변경사항을 즉시 적용하는 것이 아닌 변경사항을 모아 저장하고 이를 디스크에 적용하는 시점을 플러시라고 말합니다.

스틸 정책

스틸 정책

스틸 정책은 트랜잭션이 수정한 페이지를 커밋하기 전에 플러시하는 것을 허용하는 것을 말합니다.

노스틸 정책

노스틸 정책은 커밋되지 않은 트랜잭션이 디스크에 플러시 되는 것을 허용하지 않는 것을 말합니다.

정책 이름이 스틸인 이유

다른 트랜잭션에서 추가적인 페이지가 필요할 경우 아직 커밋하지 않은 더티 페이지를 플러시하여 다른 페이지를 가져올 수 있어 스틸 정책이라고 이름이 지어졌습니다.

장단점

장점

페이징을 통해 디스크로부터 메모리에 정보를 가져올때 메모리의 공간을 더 효율적으로 사용하기 위한 방안으로 채택되었습니다.

단점

노스틸 정책을 사용할 경우, 디스크에는 이전 상태로 기록되어 있기 때문에 복구 작업시에 리두 작업만 수행하여 복구할 수 있습니다.

포스 정책

포스 정책

포스 정책은 트랜잭션이 수정한 모든 페이지를 커밋 전에 플러시하는 것을 말합니다.

노포스 정책

노포스 정책은 일부 페이지가 디스크로 플러시되지 않더라도 트랜잭션 커밋을 허용하는 것을 말합니다.

장단점

장점

트랜잭션이 커밋되면 모든 변경사항이 디스크에 반영되어 있기 때문에 장애 복구시 트랜잭션 커밋 결과를 재구성할 필요가 없습니다.

노포스 정책에 비해 적은 양의 버퍼로 플러시를 수행하게 됩니다.

단점

매 트랜잭션마다 디스크에 적용하여 디스크 IO작업이 늘어나 커밋 시간이 늘어나게 됩니다.

정리

커밋 전에 플러시가 수행된다면 언두 작업을 저장하고 커밋 후에 플러시가 수행된다면 리두 작업을 저장해야할 것입니다. 각 데이터베이스마다 서로 다른 정책을 사용하고 있으며 포스, 스틸 정책은 복구 알고리즘 정책에 직접적인 영향을 끼치기 때문에 그러한 관점에서 바라보는 것이 좋습니다.

profile
기본부터 정리해나가는 기록용 블로그

0개의 댓글