2012. 2. 16. 17:06

[Oracle] 쿼리문 처리 과정

SQL  →  User Process  →  Sever Process  →  Parse (구문분석, 실행계획)  →  Execute (실행)  →  Fetch (인출) 


1. Parse
1)
검사
-
문법검사 : keyword 검사 (오라클에서 만들어놓은 selece, from, where...
)
-
권한검사 : 접속한사용자의 권한에 관한 검사 (사용가능한 범위에 관한 권한여부 조사
)
- 의미검사 : *, emp 등의 컬럼명이나 테이블명 등 사용자가 만든것들에 대한 검사

2)실행계획 - 딕셔너리와 인덱스를 바탕으로 '옵티마이져'가 담당한다.
완벽한인덱스가 있다면 최선의 실행계획을 도출해 낼것이다
.

검사단계에서 실행계획단계로 오면 먼저 Library Cache에서 기존에 만들어놓은 동일한 쿼리문에 대한 실행계획이 있는지 먼저 찾아보고 없다면, 옵티마이저가 실행계획을 만드는 작업을하고 결과물은 Library Cache에 기록해 놓는다. 만약 기존에 만들어놓은 실행계획이 있다면 바로 다음단계로 넘어가게된다. 여기서 Soft Parse, Hard Parse 라는 개념이 나오게 되는데


검사단계+실행계획단계 Library Cache 검색 후 기존 '실행계획' 찾아서 다음단계로 -> Soft Parse
검사단계+실행계획단계 Library Cache 검색 후 옵티마이저가 실행계획 작성하고 다음단계로 -> Hard Parse

Hard Parse
단계에서 옵티마이저가 만든 실행계획은 Library Cache에 저장되고 만약 다음에 동일한 쿼리문이 실행된다면 그때는 Soft Parse 로 진행이 될것이다.

2. Excute

인덱스의 데이터 위치정보를 기반으로 DATABASE에서 데이터가 들어있는 블락을 통채로 Instance 끌어올리는 과정이다.

3. Fetch
Instance에서 통채로 끌어올려진 블락에 들어있는 데이터들을
분석해서 원하는 데이터만 골라내어 sql문의 결과를 도출해 내는 과정이다.

'Database / Sql' 카테고리의 다른 글

[Oracle] SESSION 수 체크  (0) 2012.02.23
[Oracle] LOCK 해제  (0) 2012.02.23
[Oracle] USER_SOURCE  (0) 2011.12.27
[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
[Oracle] 오라클 버전 확인  (0) 2011.11.16