SQL

select,update,rollback,commit 문의 처리 순서

강준한 2015. 4. 15. 10:57

SELETE


1. PARSE


동일한 문장을 라이브러리 캐쉬에서 검색

동일한 문장이 없을경우 새로운 공간 생성 ( 있으면 기존 공간을 사용)

문법 검사와 스키마, 권한을 검사

실행 계획을 생성 ( 옵티마이저)


2. BIND ( bind variable를 사용하는 경우에 해당)


3. excute


찾는 block이 버퍼 캐쉬에 존재하는지 확인하고 있으면 사용, 없으면 데이터 파일로 메모리 로드 후 서버 프로세스에 의한 데이터 처리


4. FETCH


UPDATE


1. PARSE


동일한 문장이 LIBRARY CACHE에 존재하는지 확인

동일한 문장이 존재하면 기존 공간을 사용, 존재하지 않으면 새롭게 공간을 확보

문법 검사, schema 검사, 권한 검사

실행 계획 생성(OPTIMIZER)


2. BIND : bind variable을 사용하는 경우


3. EXECUTE


찾고자 하는 block이 데이터베이스버퍼캐쉬에 존재하는지 확인

존재하면 그냥 사용, 존재하지 않으면 데이터파일로부터 메모리로 load

데이터베이스 버퍼 캐시 내에서 UNDO SEGMENT BLOCK을 점유

해당 행에 락을 걸면서 UNDO SEGMENT BLOCK에 BEFORE 이미지 기록

해당 BLOCK의 실제 데이터를 변경(AFTER 이미지)

리두 로그 버퍼에 REDO ENTRI를 기록


ROLLBACK && COMMIT


ROLLBACK


1. UNDO SEGMENT BLOCK에 있는 이후 이미지가 원 데이터 블럭에 덮어 쓰여 짐

2. LOCK 해제


COMMIT


1. REDO LOG BUFFER에 있는 REDO ENTRY들이 LGWR에 의해서 REDO LOG FILE에 기록

2. LOCK 해제


좋은 기회가 생겨 한국 데이터베이스 진흥원에서 교육을 받던차 DML 문 정도의 프로세스는 기억해 두는게 좋겠다 생각되어 정리 해 놓습니다.




반응형