2013년 10월 27일 일요일

oracle select process, 오라클 SELECT문의 처리 과정, 오라클 옵티마이저

oracle select process, 오라클 SELECT문의 처리 과정, 오라클 옵티마이저 SELECT

SELECT문의 처리 과정 

1.사용자가 SQL*Plus등을 통해 “select * from emp” 라는 질의을 입력 하고 엔터를 누릅니다. 

2.이 질의 문장은 클라이언트에 있는 User Process를 통해 Oracle Server Process로 Net8 Protocol(SQL*Net)을 통해 전달 됩니다. 

3.오라클 Server Process는 다음과 같은 순서대로 질의를 해석 합니다. 

-Parsing(구문 분석) : 질의문을 의미 단위로 쪼개고 문법이 올바른지 확인 합니다. 그리고 질의를 실행 시킨 사용자가 emp 테이블에 대해 select 권한이 있는지 등을 Data Dictionary를 통해 확인 합니다. 물론 테이블이 있는지등도 검사를 하겠죠^^ 
(물론 이미 한번 이상 실행 시킨 SQL문장이라면 위의 과정을 생략하고 DataBuffer Cache에 있는 데이터를 가져다 클라이언트로 보내 주겠죠…물론 데이터베이스 버퍼 캐시에 없으면 이미 생성된  실행 계획을 가지고 다시 데이터 파일에서 읽어 올꺼구요… 여기에서는 처음 SQL 문장을 실행 한다고 보자구요…) 

-Execution(실행) : 처음 실행되는 SQL 문장이라면 DataBase Buffer Cache에 읽을 내용이 없을 겁니다. RBO나 CBO에 따라 생성된 실행 계획을 통해 필요한 데이터를 데이터파일에서 읽어 DataBase Buffer Cache에 올려 놓습니다. 

-Fetch(인출) : 이 과정은 SELECT에만 있는 것으로 Oracle Server Process가 DataBase Buffer Cache의 내용을 클라이언트 User Process에게 반환하는 과정 입니다. 

4.이제 사용자 프로세스가 받은 데이터를 SQL*Plus 화면에 뿌립니다. 


댓글 없음:

댓글 쓰기