← 질문 목록
#315깊이 0

갑자기 꺼져도 커밋한 것이 남는 이유는?

데이터베이스심화트랜잭션

데이터를 고치기 전에 무엇을 고칠지부터 로그에 적고 그 로그를 먼저 디스크에 내리기 때문이다.

순서로그데이터
1바꿀 내용을 적는다메모리에서 고친다
2디스크에 내린다아무것도 하지 않습니다
3아무것도 하지 않습니다나중에 내려간다
4재시작 때 다시 읽는다로그대로 맞춘다

커밋이 끝났다고 답하는 시점은 데이터 페이지가 아니라 로그가 디스크에 닿은 시점이다. 데이터는 아직 메모리에만 있어도 된다.

이렇게 하는 이유는 속도다. 여기저기 흩어진 페이지를 매번 내리면 디스크 헤드가 뛰어다닌다. 로그는 뒤에 이어 붙이기만 하므로 한 줄로 쓴다.

재시작하면 로그를 읽어 커밋된 것을 다시 적용한다. 커밋 안 된 것을 어떻게 치울지는 구현마다 다르다. 되돌리는 쪽도 있고 그냥 안 보이게 두는 쪽도 있다.

체크포인트는 그 시작점을 앞으로 당긴다. 없으면 처음부터 다 읽어야 해서 복구가 길어진다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

갑자기 꺼져도 커밋한 것이 남는 이유는?