Transaction State

트랜잭션 상태 전이

상태 전이는 논리 모델이다. 실제 DBMS는 로그, 버퍼, 잠금, MVCC를 조합해 이 경로를 구현한다. 어느 지점에서 장애가 났는지에 따라 redo로 확정할지, undo로 철회할지가 갈린다.

진행
확정
취소
1활동

SQL이 실행되고 잠금과 undo 레코드가 쌓이는 구간이다.

2부분 커밋

마지막 명령은 끝났지만 commit record가 안정 저장소에 완전히 남기 전이다.

3커밋

commit record가 기록되어 장애 후에도 redo 대상으로 다룬다.

4실패

오류, deadlock victim, 시스템 장애로 정상 종료가 불가능한 상태다.

5철회

undo를 적용해 변경을 되돌리고 잠금과 임시 자원을 해제한다.

로그 기준

커밋 로그가 있으면 redo, 없으면 undo가 복구의 기본 방향이다.

버퍼 기준

메모리 버퍼의 변경이 디스크에 먼저 내려갔더라도 로그가 복구 순서를 결정한다.

격리 기준

철회 중인 변경은 다른 트랜잭션이 확정 데이터처럼 읽지 않도록 격리 수준과 잠금이 보호한다.