SQL문이 실행되는 과정

Oracle/Oracle_Admin1 2016. 6. 16. 04:50

SQL문의 실행 원리


Parse -> Execute -> Fetch 



1) User가 SQL 문장을 입력 (ex. select * from 테이블)
2) User Process가 SQL문장 -> Server에 전달한다.
3) SQL을 입력하면 ServerProcess로 전달한다.
4) Server Process는 syntax check -> semantic check -> 권한 검사(parce)를 하게된다.
   여기에서 syntax check와 semantic check를 하기위해 Dictionary cache를 사용한다.
5) Shared pool의 library cache에 sql문이 있는지 check(hash 검사)
6) library cache를 Check해서 실행계획등이 있다면 execute 단계로 넘어가게 된다.
   이 과정까지가 Soft parsing이다.

7) library cache에서 실행계획등이 없다면 Optimizer에 실행계획등을 만들어달라 요청하게 된다.
** Optimizer가 실행 계획등을 만들 떄 하나의 실행계획등을 만드는 것이 아니라
   여러 개의 실행계획등을 만들게 된다. 그 중 가장 효율적인 실행계획을 하나 찾게된다.
8) Optimization에서 실행계획을 가지고 library cache에 등록을 하고, PGA로 복사해서
   execute 단계로 넘어간다.

 

1,2,3,4,5,6 과정이 soft parsing에 대한 내용
1~8번까지의 과정이 hard parsing에 관한 내용

 

excute

1. data buffer cache는 data file의 블록주소를 hash value로 변경
 hash value가 data buffer cache의 hash list와 일치하는지 검사
 일치하면 -> Fetch단계로 넘어간다.
일치하지 않으면, 해당블록이 있는 data file로 가서 해당블록을 data buffer cache로 복사한다.
다시 1번의 과정을 거쳐 Fetch단계로 넘어간다.

Fetch
1. execute에서 온 블럭이 database buffer cache에 올라온다.
   해당 블록에 다른 데이터까지 있는 경우가 있다.
Fetch는사 용자가 요청한 데이터만 골라내는 작업이다.

 

DML 문
-> parse 부분 select와 동일

execute
1. data block -> DB buffer cache에 가져온다.
2. server process -> redo log buffer에 기록
3. undo segment에
4. db buffer cache의 내용 변경

fech




SQL문 수행 절차

Parse : SQL문에 대한 문법, Object 존재 여부, 권한등을 검사, SQL문의 최적의 실행 방법을 

          검사

Execute : 실제 자료 처리가 발생하는 부분으로 다양한 사용자의 요구가 이루어진다.

Fetch : select 문장의 경우에 처리된 자료가 사용자에게 보내지는 과정



soft parsing : SQL과 실행계획을 캐시에서 찾아 곧바로 실행단계로 넘가는 경우..

hard parsing : SQL과 실행계획을 캐시에서 찾지 못해 최적화 과정을 거치고 나서 실행단계로                      넘어가는 경우

'Oracle > Oracle_Admin1' 카테고리의 다른 글

(Linux)Kernel Parameter : sysctl.conf  (0) 2016.06.21
(Linux)_Kernel Parameter : limits.conf  (0) 2016.06.21
데이터 파일 이동  (0) 2016.06.15
default_permanent_tablespace  (0) 2016.06.14
oracle 시스템장애시 error확인  (0) 2016.06.10
admin