2009-05-18 13 views
1

큰 프로 시저를 사용하는 대신 저장 프로 시저를 여러 프로 시저로 구분할 때 성능에 차이가 있습니까?
어느 것이 더 빠릅니까? 예를 들어
Oracle/PLSQL 성능

:

mainSP 
    callSP1 
    callSP2 
    callSP3 
end; 

보다는 :

는 무슨 일이 일어나고 있는지에 따라 달라집니다
SP 
    .... 
    .... 
    .... 

답변

6

성능상의 이점은 매우 드문 경우입니다 (예 : 메인 프로 시저가 반복적으로 여러 번 호출되고 각각의 반복 작업에는 많은 시간이 걸리지 않습니다.

대부분의 경우 프로그램을 논리적 단계로 세분화 할 수있는 유지 관리 가능성이 미미한 성능 향상보다 중요합니다.

앞서 언급 한 것처럼 벤치 마크 및 테스트 - 상당한 이점을 발견하지 못하면 유지 보수성을 고려해야합니다 - 향후 개발자가 감사 할 것입니다!

0

.

mainSP가 callSP1에서 루핑하고 mainSP가 데이터 집합에서 작동하도록 단일 명령문을 수행 할 수 있다면 속도가 느려질 수 있습니다.

다른 절차를 호출하는 데 약간의 오버 헤드가 있으며 오류 메시지를 다시 전달하는 데 약간의 문제가 있습니다.

코드를 모두 복제하는 경우 일반적인 루틴을 작성하십시오. 다른 현명한 그것을 함께 유지.

2

이론적으로 다른 저장 프로 시저에서 저장 프로 시저를 호출 할 때마다 약간의 성능 저하가 발생합니다. 그러나 정확한 영향은 호출되는 저장 프로 시저의 매개 변수와 유형의 수에 따라 달라집니다.

일반적으로 중요하지 않습니다. 그러나 의심 할 때 테스트합니다.

+0

매개 변수의 수에 대해 언급 한 것으로 나타났습니다. 커서가 3 개 또는 4 개인 경우 성능 문제가 있습니까? – jDeveloper

6

10g 이상에는 '최적화 컴파일러'가 있습니다.

11g, 그것은 할 것 "서브 인라인. 서브 인라인가 호출 된 서브 프로그램의 사본 (같은 프로그램 단위의 서브 프로그램으로) 서브 프로그램 호출을 대체"나는 인라인은 10g의 일부라고 생각

, 거기에 문서화 된 것을 찾을 수는 없습니다.

+1

인라인은 11g에서 확실히 추가되었습니다. 이전 버전의 Oracle (8i, 9i)은 기능 오버 헤드가 커서 성능이 DRY 원칙을 위반하는 경우 코드를 "인라인"하는 데 도움이되었습니다. –