Fast Commit
- 데이터블록에 기록하는 방식인 랜덤 엑세스는 느리고, 반면 로그는 Append 방식으로 기록하기 때문에 상대적으로 빠르다.
- 트랜잭션 발생시 건건이 데이터 파일에 기록하기 보다, 우선 변경사항을 로그에 기록한다.
- 기록한 로그파일을, 메모리 데이터 블록과 데이터 파일간 동기화는 적절한 수단(DBWR)을 이용해 나중에 배치 방식으로 일괄 수행한다.
- 사용자의 갱신내용이 메모리상의 버퍼블록에만 기록된 채 , 아직 디스크에 기록되어 있지 않지만, Redo 로그를 믿고 빠르게 커밋을 완료한다는 의미이다.
- Instance Crash 가 발생하더라고 언제든지 Recovery 가능한 상태가 되므로 오라클은 안심하고 커밋을 할 수 있다.
Redo 로그의 기록
- Redo 레코드를 기록할 때도 곧바로 로그 파일에 저장하는 것은 아니다.
- Redo 로그 버퍼에 기록한다. 즉 데이터블록을 변경하기 전에 항상 Redo 로그 버퍼에 먼저 기록하고, 일정 시점마다 LGWR 프로세스에 의해 Redo 로그 버퍼에 있는 내용을 로그파일에 기록한다.
LGWR이 Redo 로그에 기록하는 시점
1.3초마다 DBWR 프로세스로 부터 신호를 받을때.
2.로그 버퍼의 1/3이 차거나, 기록된 Redo 레코드양이 1mb를 넘을때.
3.사용자가 커밋 또는 롤백 명령을 날릴때.(=fast commit 매커니즘의 핵심)
-> 트랜잭션이 영속성을 보장받으려면 최소한 커밋 시점에는 Redo 정보가 메모리가 아닌 디스크상에 저장되어 있어야한다.(Log force at commit.)