대용량 데이터 베이스 솔루션 I
Ch 2 응용프로그램의 최적화
> 각각의 SQL 문장을 수행하기위한 'DBMS CALL;의 부하를 줄여 수행속도의 향상을 유도한다.
>응용 프로그램 작성시의 고려사항
1. 절차형 SQL 과 저장형 프로시져 의 활용
2. 커서의 사용기준
3. 에러처리
4. 호스트 변수 와 데이터 타입
>응용 프로그램의 유형
1. 온라인 화면 조회/갱신
2. 배치 프로그램
1. 응용 프로그램 작성시의 고려사항
> 절차형 SQL 과 저장 프로시져의 활용
>>절차형 SQL 의 활용
>>>오라클은 전달된 PL/SQL 전체를 최적화하는것이 아니라 그안에 포함된 SQL 단위로 최적화를 진행한다
그러므로 전체의 PL/SQL이 최적화 되어있다고는 말할수 없다.
>>> 응용 프로그램의 60~90%를 SQL 이 처리할수 있도록 해야한다.
>> SQL*FROMS 와 Pl/SQL
>> 클라이언트 /서버 환경에서의 Pl/SQL
>>> PL/SQL 에서는 가능한 프로그램 호스트 변수의 사용을 금하고 Pl/SQLdmlrlsmddmf 이용하여 문자,숫자,날짜를
처리하는것이 통신 부하를 줄여준다.
>> 저장 프로시져의 황용
1. 보안 >유저에 따른 저장 프로시져의 접근 권한 설정
2. 수행속도 > 개별적인 SQL 보다 빠르다
3. 메모리 할당의 감소 > 사용된 프로시져는 오라클의 공유 SQL 영역에 저장되므로 다수의 사용자에 사용될경우 크게 유리하다.
4. 생산성및 통합성 > 업무규칙중 공통적이면서 서버데이터에 의존적인 부분 을 저장 프로시져화 한다면 이는 모든 프로그램에서
사용가능하고 다양한 업무 환경에 적용가능하다. > DBA의 역할
> 커서(CURSOR)의 사용기준
>> 내부 커서
>>> 오라클은 SQL 문장에 대해서 무조건 내부 커서를 생성하며 이는 DECLARE /OPEN /FETCH /CLOSE 의 작업순서로 매번 실행된다.
( 단 보관 커서의 경우는 제외된다)
>>> Pl/SQL에서 DECLARE 문이 없으면 내부 커서를 생성한다.
>> 외부 커서
>>> 테이터를 조회하면서 여러 개의 로우가 추출되지만 그 좃건에 맞는 로우의 최대치가 몇 개인지를 안수 없다면 DELCARE 를 이용한 외부
커서를 이용한다.
위의 그림과 같이 동작하므로 이 커서가 다시 사용된다면 CLOSE 하지 말고 DECLARE에서 사용된 호스트 변수에 원하는 값을 다시
부여하고 OPEN 부터 다시 수행 시킬수 있다. DECLARE-> CLOSE 까지를 서브 루틴에 넣고 구성하는것은 엄청난 부하를 일으
킬수 있다.
>> DECLARE SQL 의 활용
>>> 반복연결 (LOOP SUERY ; SQL 문장을 하나씩 쪼개서 날리는것 ) : 은 조인을 했을떄 전체 처리 범위가 되도록 하는 원인이 어느한쪽에
있을때 유리해지는 방법이다,
>>> JOIN SQL 의 활용
DECLARE 한후에 다시 내부에서 DECLARE / OPEN/FETCH를 이용하면 내부에서 다시 OPEN dl 발생하므로 효율이 나쁘다.
SELECT .. INTO .. 는 반드시 하나의 결과를 반환하는것이 아니라. 뒤의 변수가 배열형이면 여러 개를 반환할수 있다.
그 여러 개의 결과마다 DECLARE/OPEN/FETCh 과정이 반복되면 당연히 효율은 떨어진다.
>> HOLD_CURSOR 의 활용(사용)
>>> 반복되는 SQL 문장에 불필요한 파싱작업을 다시 하도록 해서는 안된다. DECLARE CURSOR 를 사용하는 외부커서는
DECLARE/OPEN /FETCH/CLOSE 문장에 의해 커서를 유지하지만 내부 커서(일반 SQL) 의 경우는 HOLD_CURSOR, RELEASE_CURSOR
옵션을 지정해야만 내부커서를 보관할수 있다.
% 오라클의 초기 맥스 커서 값은 10이므로 늘려주어야 한다.
EXEC ORACLE OPTION(MAXOPENCURSORS = 20);
………………
EXEC ORACLE OPTION(HOLD_CURSOR=YES);
EXEC ORACLE OPTION(RELEASE_CURSOR=NO);
………..LOGIC PROCESS
EXEC ORACLE OPTION(RELEASE_CURSOR=YES);
> 에러의 처리
No comments:
Post a Comment