SQL 처리과정

SQL 처리과정

IMG_8368.heic

IMG_8463.heic

SQL은 세 단계로 나눠서 처리됨

  1. Parse Call

    파싱과 최적화를 수행하는 단계 SQL과 실행계획을 라이브러리 캐시에서 찾으면, 최적화 단계는 생략할 수 있음 하드 파싱이 발생하면 최적화 단계가 필요하니 Recursive Call(데이터 딕셔너리 조회)이 발생

  2. Execute Call

    SQL을 실행하는 단계 DML은 이 단계에서 모든 과정이 끝나지만, SELECT 문은 Fetch 단계를 거침 (DML은 I/O가 Execute Call에서 발생하고, SELECT는 Fetch 단계에서 발생) DML 문에 DB 내장된 함수가 포함되면 Recursive Call(함수 호출) 발생

  3. Fetch Call

    데이터를 읽어서 사용자에게 결과집합을 전송하는 과정 전송할 데이터가 많으면 Fetch Call이 여러 번 발생 SELECT 문제 DB 내장된 함수가 포함되면 Recursive Call 발생

Call이 어디서 발생하느냐에 따라 User Call, Recursive Call로 나뉨 (User Call 이든, Recursive Call이든 SQL을 실행할 때마다 Parse, Execute, Fetch 단계는 발생)

<SQL 트레이스 리포트 Call 부분 예시>

IMG_8467.heic