본문 바로가기
도전기/SQLP

ch05_데이터베이스 Call 최소화 원리_[오라클 성능 고도화 원리와 해법_I]

by Qookoo 2024. 8. 29.
반응형

intro 

Sql 수행 중 발생, Execute Call, Fetch Call 줄이는 방안,

User call, Recursive Call 최소화 원리와 방안

 

01 Call 통계

Parse Call 커서 파싱하는 과정, 실행계획 생성 및 차즌 과정 정보
Execute Call 커서 실행 통계
Fetch Call select문에서 실제 레코드 읽어 사용자가 요구한 결과 집합 반환 과정

DML문(insert, update, delete, merge) Fetch call 미발생 

 

02 User Call vs Recursive Call

- User Call : OCI 통해 오라클 외부로 들어오는 Call

Client   WAS   DBMS  
  service call   Usecall   Recursive Call
Presentation Layer   Business Layer   Data Layer  

 

- DBMS 성능과 확장성 높이려면 User Call을 최소화

  Loop 쿼리를 해소하고 집합적 사고를 통해 One-Sql  구현
: I/O 효율의 핵심, 동일 레코드 반복 액세스하지 않고 블록 액세스 양 최소화
  Array Processing 
  부분범우처리 원리 활용
  효과적인 화면 페이지 처리
  사용자 정의 함수 / 프로시저 / 트리거 적절한 활용

 

- Recursive Call : 오라클 내부에서 발생하는 Call

- PL/SQL 프로그램에 대한 지나친 모듈화는 지양

 

03 데이터베이스 Call이 성능에 미치는 영향

 

04 Array Processing 활용

한번의 SQL 수행으로 다량의 로우를 동시에 I/U/D 수행

st.addBatch();  
statm1.setFetchSize(1000);  
if(++rows%1000==0) stmt2.executeBatch();  
stmt2.executeBatch();  
   

 

05 Fetch Call 최소화

부분범위처리 원리  
OLTP 환경에서 부분범위처리에 의한 성능개선 원리  
ArraySize 조정에 의한 Fetch call감소 및 블록 I/O 감소 효과 ArraySize 클수록 Fetch Count 횟수 줄고 블록 IO 감소 
프로그램 언어에 서 Array 단위 Fetch기능 활용  

 

06. 페이지 처리의 중요성

페이지 처리 하지 않을 때 부하 페이지 처리
다량의 Fetch Call 발생 화면에 필요한 만큼 Fetch Call
대량의 결과 집합을 클라이언트로 전송하면서 발생하는 네트워크 부하 필요한 만금 네트워크 처리
대량의 데이터 블록을 읽으면서 발생하는 I/O 부하 최소량 IO
AP 서버 및 웹서버 리소스 사용량 증가 리소스 사용량 최소화
   
   

 

07 PL/SQL 함수의 특징과 성능 부하

 

PL/SQL  함수의 특징 인터프리터 언어, 내장 함수에 비해 속도 느림
재귀 Call 포함하지 않은 함수의 성능 부하  
재귀 Call 포함하는 함수의 성능 부하  
함수를 필터조건으로 사용할 때 주의사항  
함수와 읽기 일관성  
함수의 올바른 사용기준 정해진 공유 풀 크기 내에서 소화할 수 있는 정도 유지

 

08 PL/SQL  함수 호출 부하 해소 방안

페이지 처리 또는 부분범위처리 활용
Decode 함수 또는 Case 문으로 변환
뷰 머지 방지를 통한 함수 호출 최소화
스칼라 서브쿼리 캐싱 효과를 이용한 함수 호출 최소화
Deterministic  함수의 캐싱 효과 사용
복잡한 함수 로직을 풀어 SQL로 구현
반응형