본문 바로가기
SQLP Study/Database Call

02 User Call VS Recursive Call

by bash park 2020. 4. 12.

02 User Call VS 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
>> 바인드 변수의 적극적 사용, 하드파싱 횟수 절감을 통해 Recursive Call 감소
>> Recursive Depth를 크게 만들지 않게끔 프로시저 구성 ( 프로시저 안에 프로시저가 들어있는 횟수 : Recursive Depth )
>> Recursive Depth를 크기 만들지 않게끔 지나친 Procedure의 모듈화를 지양
>> 대용량 데이터 조회시 함수호출이 건건이 발생하지 않게끔, 함수를 부분범위 처리가 가능한 상황에서,
     제한적으로 사용해야함
>> 조인 또는 스칼라 서브쿼리 형태로 변환.



댓글