본문 바로가기

Oracle/Tunning

[Oracle] User Call vs Recursive Cal

728x90

정의

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의 모듈화를 지양
     대용량 데이터 조회시 함수호출이 건건이 발생하지 않게끔, 함수를 부분범위 처리가 가능한 상황에서,
     제한적으로 사용해야함
    조인 또는 스칼라 서브쿼리 형태로 변환.

 

 

728x90
반응형