ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL문 처리과정
    SQL 2020. 2. 24. 19:53

    SQL문 처리과정

     

    서버 프로세스에 의해 PGA를 통해 수행

     

     

     

    1. 구문분석 / 실행 계획 -> 2. 바인드 -> 3. 실행 -> 4. 인출(FETCH)

     

     

    1. 구문분석 실행 계획 

     

       1) 공유 풀에서 동일한 실행 계획이 있는지 검색(커서 공유)

     

          * 실행 계획을 세우는 작업이 비용이 높기 때문에 재사용 할 수 있으면 하려고

     

          * SQL 공유 

       

             -> 이미 수립된 실행 계획을 공유해서 재사용 (재사용 하려면 SQL 구문이 동일해야 함)

     

               * 동일한 SQL 문장이란?

     

                 -> 1] 대소문자 가림

                      

                     2] 공백도 동일해야함

     

                      3] 조회 결과가 같다고 동일한 SQL문이 아님

     

                      4] 주석도 영향을 미침

     

                예제

     

                  - 다음의 SQL 문장들은 동일한 문장이 아님

     

                    select * FROM dept;

     

                    SELECT * FROM dept;

     

                    SELECT   * FROM dept;

     

                    SELECT *

                    FROM dept;

     

                   --------------------------------------------------

     

                   SELECT *                                 SELECT *

     

                    FROM dept                            FROM dept 

     

                    WHERE deptno = 10;                WHERE deptno = 20;

     

                   -> 위의 두개의 SQL문은 WHERE절의 deptno만 다르고 다른 텍스트는 동일

     

                      하지만, DBMS는 서로 다른 SQL로 인식

     

                        즉, 다른 SQL 실행 계획을 세운다,  실행 계획을 공유하지 못함

     

                           ==> 해결책 : 바인드 변수 사용  => 실행계획 공유가능 => 메모리 자원 낭비 방지

            

      

       2) SQL Syntax 검사 (문법적으로 오류가 없는지)

     

       3) Semantic 검사

     

       4) Data Dictionary

     

       5) 참조 객체 검사

     

       6) 스키마, 롤, 권한

     

       7) 실행 계획 작성

     

    2. 바인드 

     

     - 바인드 변수 값이 있는 경우 할당

     

    3. 실행

     

     - 실행 계획 적용

     

        * 실행에 필요한 작업 수행 - DB I/O 작업

          

                                           - 조인, 정렬

     

    4. 인출 

     

     - 질의 결과 행들을 검색하여 반환

     

     - 검색하여 반환

     

     - 배열처리

     

     - 정렬

     

     

    'SQL' 카테고리의 다른 글

    반정규화  (0) 2020.03.02
    효율적인 쿼리 검색!!!!!  (1) 2020.02.20
    계층 쿼리 누적 합 구하기  (1) 2020.02.20
    계층형 쿼리 (Hierarchiacal Query)  (0) 2020.02.18
    달력 쿼리  (0) 2020.02.17

    댓글

Designed by Tistory.