SQL문이 실행되는 과정
Oracle/Oracle_Admin1 2016. 6. 16. 04:50SQL문의 실행 원리
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 |