출처 : 내 머릿속... (어디서 어떤 자료를 봤는지도 가물가물하다... oracle fund1 이려나? )
SQL 처리과정에 대해 이야기 하고자 한다.
개략적으로 PARSING -> EXECUTE -> FETCH 단계를 거친다.
ORACLE의 SQL TUNING에서 BIND 항목도 추가되었던 것 같다.
결과적으로 PARSING ->( BIND ) -> EXECUTE -> FETCH 단계이다.
각 단계는
PARSING SQL 구문의 문법,의미,USER의 권한 검사 등의 절차를 밟아 최종적으로
PARSE TREE, EXECUTE PLAN, SQL(이 부분은 HASH FUNCTION을 통한 값으로 생각한다)
위의 세가지를 생성하기 까지이다.
BIND USER가 구문에서 사용한 VALUE를 실제 값으로 치환하는 단계이다.
바인드 변수를 사용했을때 파싱단계 비용을 절약할 수 있다.
EXECUTE 실행계획을 이용해 데이터를 가져오는 단계이다.
실행계획은 CBO, RBO 두가지 방법이 있고 10g에서는 CBO 방식만 사용한다.
FETCH USER에게 결과를 돌려주는 절차이다.
S/P 가 결과를 U/P에게 던져주고 최종적으로 사용자에게 보여지게 된다.
(DML 에서는 이 단계가 생략된다.)