COMMIT문의 처리과정
데이터베이스의 성능튜닝을 원활하게 수행하기 위해서는 DB구조에 대한 완벽한 이해는 필수적 입니다.3가지 유형의 SQL문 처리과정을 통해 오라클 서버구조에 대해 알아 보도록 하겠습니다. 위 3가지 유형중에 한가지 유형을 선택하십시오.
DML문을 실행한 후 변경작업을 종료하려면 Commit문을 실행하며 변경취소를 하려면 Rollba ck문을 실행하게 되는데 그 과정에 대해서 자세히 알아보도록 하겠습니다. (위 그림의 "클릭" 버튼을 누르시면 "COMMIT문의 처리과정"을 그림을 통해 이해할 수 있습니다.)
다음은 사용자가 DML(Insert,Updata,Delete)문을 실행한 후 Commit문을 처리했을 경우 데이터베이스 내부에서 처리되는 과정입니다.
- 사용자가 DML 문을 실행한 후 COMMIT문을 실행합니다.
- 서버 프로세스는 DML문의 처리결과(변경전의 데이터, 변경후의 데이터)가 저장되어 있는 로그 버퍼영역에 시스템 변경번호(SYSTEM CHANCE NUMBER)를 부여합니다.
- 그리고 로그 기록기(LGWR)는 로그버퍼 영역에 있는 변경 데이터를 영구적으로 보관하기 위해 리두로그 파일에 저장합니다.(메모리 영역에는 데이터를 영구히 저장할 수 없기 때문에)
- 서버 프로세스는 네트워크를 통해 사용자 프로세스에게 'Committed' 메시지를 전송하고 사용자 프로세스는 SQL*PLUS 화면에 메시지를 출력해 줍니다.
- 만약, 로그버퍼 영역의 데이터를 하나의 리두로그 파일에 모두 저장하지 못하면 다음 로그파일로 위치를 이동시킵니다, 이것을 로그 스위치(LOG SWITCH)라고 합니다. 로그 스위 치가 발생하면
- CKPT 프로세스는 컨트롤 파일과 데이터 파일의 헤드영역에 시스템 변경 번호와 관련 상태정보를 저장합니다. 이것을 체크포인트 이벤트라고 합니다.
- 이 작업이 끝나면 데이터베이스 기록기(DBWR)는 데이터버퍼 캐시영역에 있는 사용자의 변경정보를 최종적으로 테이블에 저장합니다.