2015-01-17 2 views
1

절차 번호 A 계산 된 1000 번호를 가정하고 절차 번호 B을이 번호와 절차 B 각각에 대해 실행하려면 몇 가지 작업을 수행하십시오.
해결 방법 1 : 숫자 절차 A 호출 절차 B 1000 배
솔루션 견인 : 절차는 다음 절차는 번호 하나 개 비용이 절차 B 1000 번 및 솔루션 견인 비용은 호출
솔루션을 읽을 B 중간 테이블에 번호를 저장 A 1000 개의 숫자 (한 줄에 각 숫자)를 삽입하고 1000 개의 숫자를 읽는 (선택). plsql을 사용하여 어떤 성능이 더 좋은지 알고 싶습니까?오라클의 어떤 솔루션이 더 나은 성능을 제공합니까?

+2

기본적으로 직접 호출 대신 _queue_를 사용하는 것이 좋습니다. 분명히, 전자는 여분의 오버 헤드를 가지고있다. 그러나 귀하의 예는 구체적으로 설명되어 있지 않습니다 : A와 B (그리고 B의 여러 인스턴스)가 병행 할 수 있습니까? B와 비교하여 숫자를 생성하는 비용은 어떻게됩니까? A와 B는 병렬로 작동하여 어떻게 든 악용 될 수있는 "대기 상태"를 가지고 있습니까? "실패"의 경우 A와 B를 어떻게 행동해야합니까? –

+0

B의 여러 인스턴스를 병렬로 실행할 수 없으며 질문의 두 번째 부분을 이해하지 못했습니다. –

+2

'중간 테이블'에 대해 일반 테이블, 전역 임시 테이블 또는 PL/SQL 테이블 (컬렉션)을 사용 하시겠습니까? 오버 헤드는 각각 다를 수 있습니다. –

답변

1

예를 들어 이러한 옵션을 옵션으로 지정하면 옵션 2를 선택합니다. 간단히 말해 우리는 루프를 작성하지 않고 쓰기 대신 1000 번 다른 프로 시저를 호출하고 읽기가 더 효율적입니다. 유지 보수 측면에서 절차 B의 모든 실패는 절차 A의 다른 실행을 보증하지 않으며 간단히 두 번째 부분을 다시 시작할 수 있습니다.

관련 문제