정의
Call이 어디서 발생하느냐에 따라 User Call과 Recursive Call로 나눌 수 있다.
1) User Call : OCI(Oracle Call Interface)를 통해 외부로부터 들어오는 Call
2) Recursive Call : 오라클 내부에서 발생하는 Call,
- SQL파싱과 최적화 과정에서 발생하는 Data Dictionary 조회,
- PL/SQL로 작성된 사용자 정의 함수 , Procedure , Trigger로 인한 SQL수행
특징
1) User Call
User Call 발생 빈도를 결정하는 요소들
개발자의 기술이 관여
프레임워크 내에 Array processing을 지원 유무가 중요하다.
설계 표준 가이드
사용자 정의 함수/프로시저에 대한 무조건적인 제약
모듈이 지나치게 단위로 구성되어 SQL이 건건이 호출되는 개발환경
Loop 쿼리를 해소하고, 집합적 사고를 통해 One-SQL로 구현
Array Processing : Array 단위 Fetch, Bulk Insert / Update / Delete
부분범위처리 활용
효과적인 화면 페이지 처리
사용자 정의함수 / 프로시저 / 트리거의 적절한 활용
2) Recursive Call
Hard Parsing에 대해 Recursive Call 발생
바인드 변수의 적극적 사용, 하드파싱 횟수 절감을 통해 Recursive Call 감소
Recursive Depth를 크게 만들지 않게끔 프로시저 구성 ( 프로시저 안에 프로시저가 들어있는 횟수 : Recursive Depth )
Recursive Depth를 크기 만들지 않게끔 지나친 Procedure의 모듈화를 지양
대용량 데이터 조회시 함수호출이 건건이 발생하지 않게끔, 함수를 부분범위 처리가 가능한 상황에서,
제한적으로 사용해야함
조인 또는 스칼라 서브쿼리 형태로 변환.

'Oracle > Tunning' 카테고리의 다른 글
| [Oracle] Array Processing (0) | 2025.03.05 |
|---|---|
| [Oracle ] 중첩 서브 쿼리 동작 방식 (1) | 2025.02.28 |
| [Oracle ] Sort를 발생 시키는 오퍼레이션 (0) | 2025.02.28 |
| [Oracle] 부분 범위 처리에 따른 INDEX FULL SCAN 성능 (1) | 2024.08.12 |
| [Oracle] Tunning 관련 파라미터 정리 (2) | 2024.08.12 |