데이터베이스의 업데이트 내역이 데이터 파일에 영구 기록되기까지의 과정을 알아보자.
데이터베이스에서 실행한 트랜잭션(transaction)들은 커밋(commit) 명령을 실행하기 이전까지는 미확정된 내용으로, 해당 유저의 세션에만 적용된다. 이 때의 내용들은 데이터베이스 버퍼 캐쉬(Buffer Cache)에 임시적으로 저장된다.
커밋 명령이 실행되면 그 이전까지의 데이터베이스 업데이트 내역이 확정된 것으로 취급되어 모든 유저의 세션에 적용되게 된다. 그러면 트랜잭션의 기록은 우선 리두 로그(Redo Log)에 기록되고, 그 뒤 실제 데이터 파일에 기록된다. 리두 로그에 남은 기록들은 추후 데이터 파일에 손상이 가해졌을 때 복구를 위해 사용된다.
오라클 데이터베이스에서 이러한 기록 작업을 수행하는 것은 배경중의 처리, 즉 백그라운드 프로세스(Background Process)들이다. DBWn(Database Writer), LGWR(Log Writer) 등의 프로세스들은 말 그대로 데이터베이스와 로그에 기록하는 작업을 관리하며, CKPT(Checkpoint)는 로그의 내용을 정기적으로 데이터 파일에 기록하는 체크포인트 작업을 수행한다.
위의 과정을 단순하게 살펴보자면 다음 그림과 같다.
'DB' 카테고리의 다른 글
서브쿼리(Subquery)와 인라인 뷰(Inline View) (2) | 2016.02.23 |
---|---|
기본키와 고유키 (0) | 2016.02.20 |
데이터베이스에서의 커서 (Cursor) (0) | 2016.02.18 |
클러스터드/넌클러스터드 인덱스 (0) | 2016.02.17 |