Oracle 9iPL/SQL 프로 그래 밍 경험 소결

2725 단어 Orraaccllee9
보고 있 는 ORACLE 튜 토리 얼 은 오 라 클 9iPL/SQL 프로 그래 밍 의 경험 소결 입 니 다.평소에 PL/SQL 에서 프로 그래 밍 하 는 과정 에서 문제 가 발생 했 는데 여기 서 문답 형식 으로 이 를 정리 하여 여러분 이 공유 할 수 있 도록 합 니 다.1.표 에 대량의 데이터 흐름 을 불 러 오 거나 대량의 데이터 흐름 을 처리 해 야 할 때 파 이 프 를 사용 하여 처리 효율 을 높 일 수 있 습 니까?파이프 함 수 는 병렬 조회 의 성능 을 개선 하 는 데 매우 편리 하 며,표 에 데 이 터 를 불 러 오 는 속 도 를 가속 화 합 니 다.파이프 함수 의 사용 은 다음 과 같은 두 가 지 를 요약 합 니 다.조회 에서 PL/SQL 함 수 를 사용 할 때마다 이 조 회 는 직렬 화 됩 니 다.즉,하나의 프로세서 가 하나의 조회 인 스 턴 스 만 실행 할 수 있 습 니 다.그러면 이러한 상황 에서 병렬 조 회 를 사용 할 수 없습니다(예 를 들 어 데이터 창고 에서 이 기술 을 자주 사용 해 야 합 니 다).따라서 병렬 조 회 를 사용 하기 위해 서 는 파이프 함 수 를 사용 해 야 하기 때문에 실행 속도 가 빨 라 진다.파이프 함수 의 입력 매개 변 수 는 참조 기록 집합 형식(즉 ref cursor)이 어야 하 며,포 함 된 표 형식(표 의 줄 마다 참조 기록 에 대응)을 되 돌려 줍 니 다.파이프 함 수 를 사용 하기 전에 프로그램 헤더 에 PARALLEL 을 써 야 합 니 다.ENABLE,그래 야 검색 어 에서 파이프 함 수 를 사용 하여 처리 할 수 있 습 니 다.2.어떻게 하면 PL/SQL 프로그램 이 일정 시간 동안 실 행 될 때 까지 기다 릴 수 있 습 니까?방법 은 DBMS 를 사용 하 는 것 입 니 다.LOCK 패키지 의 SLEEP 함 수 는 정확 한 시간 을 정할 수 있 습 니 다.그 문법 은 DBMS 입 니 다.LOCK.SLEEP (seconds IN NUMBER);3.한 장의 표 에 기록 을 삽입 한 후 몇 초 후에 다른 작업 을 수행 해 야 합 니 다.어떻게 PL/SQL 프로그램 에서 정시 작업 을 합 니까?일반적인 방법 은 순환 으로 지연 시 키 고 DBMS 를 이용 하 는 것 이다.UTILITY 의 gettime 함 수 는 현재 시간 을 감지 합 니 다.프로그램 코드 는 다음 과 같 습 니 다.
DECLAREv_delaytime CONSTANT INTEGER := 100; v_starttime INTEGER ; v_endtime INTEGER ;BEGINV_starttime := DBMS_UTILITY.get_time;V_endtime := DBMS_UTILITY.get_time;While abs(V_endtime- V_starttime)< v_delaytime loop/*빈 순환 또는 간단 한 시간 소모 실행 문*/End loop;END;/또한 세 션(session)간 의 시간 이 다 르 면 DBMS 를 사용 해 야 합 니 다.PIPE 패키지 의 함 수 는 세 션 간 의 메시지 전달 을 실현 합 니 다.4.PL/SQL 이 데이터 세트 를 되 돌려 줄 때 집합 을 사용 해 야 합 니까?커서 를 사용 해 야 합 니까?일반적으로 다음 과 같은 두 가지 근거 가 있다.1)PL/SQL 프로그램 이 여러 줄 의 데 이 터 를 다른 PL/SQL 프로그램 에 되 돌려 주면 집합 을 사용 하 는 것 을 권장 한다.이 는 집합 적 인 일괄 수집(bulk collection)을 이용 하여 데이터 베이스 에서 수량 을 추출 하 는 속 도 를 높 일 수 있 기 때문이다.2)PL/SQL 프로그램의 환경 에서 데 이 터 를 숙주 언어 환경 으로 되 돌려 야 한다 면(예 를 들 어 Sql*plus,c,delphi 등),이 때 는 커서 변 수 를 사용 하여 이 데 이 터 를 되 돌려 야 합 니 다.거의 모든 숙주 언어 가 커서 변 수 를 지원 하지만 모든 숙주 언어 가 집합 을 지원 하 는 것 은 아 닙 니 다.이렇게 하면 프로그램의 이식 성 을 강화 할 수 있다.5.어떻게 하면 PL/SQL 에서 커서 를 더욱 효과적으로 사용 할 수 있 습 니까?커서 는 PL/SQL 에서 매우 중요 한 개념 으로 데이터 베 이 스 를 검색 할 때 주로 커서 에 의 해 작 동 된다.PL/SQL 에는 두 가지 커서 가 있 는데 하 나 는 암시 적 커서 입 니 다.예 를 들 어 select clno into vclno from table_detail.다른 하 나 는 cursor v 와 같은 명시 적 커서 입 니 다.cur is select clno from table_detail。커서 사용 에 대해 다음 과 같은 몇 가지 제안 을 드 립 니 다.1)가능 한 한 bulk collection 을 사용 하 십시오.이 는 운영 성능 을 크게 향상 시 킬 수 있 습 니 다.오 라 클 9i 의 2 판 에 서 는 bulk collection 을 사용 하여 데 이 터 를 기록 표 2 에 직접 기록 할 수 있 습 니 다)가능 한 한 명시 적 커서 로 처리 할 수 있 습 니 다.암시 적 커서 에 비해 명시 적 커서 의 속도 가 빠 르 기 때 문 입 니 다.3)조회 한 시계 가 작 거나 정적 이면 이 시 계 를 패키지 급 집합 에 캐 시 할 수 있 습 니 다.이렇게 하면 검색 함 수 는 시스템 전역(SGA)에서 데 이 터 를 가 져 오 는 것 이 아니 라 집합(즉,프로 세 스 전역,PGA cache)에서 직접 데 이 터 를 가 져 옵 니 다.이러한 처리 속 도 는 많이 향상 될 것 입 니 다.

좋은 웹페이지 즐겨찾기