2010-03-05 3 views
1

우리는 많은 SP를 보유하고 있으며 그 중 많은 부분이 영원히 실행됩니다. 이 SP는 상당히 길며 SP를 통해 어떤 쿼리가 오래 걸리는지 알기 쉽습니다.오라클 SP의 성능을 향상시키는 방법 -

어떤 검색어가 가장 오래 걸리는지 확인하는 가장 좋은 방법은 무엇입니까? 그래서 우리는 연구에 시간을 보내기보다는 그 질의에 집중할 수 있습니다. 현재 내가 SP

+0

오라클의 버전은 무엇입니까? 감사합니다. –

답변

2

설명에게 계획을 실행하기 위해 PL/SQL 개발자를 사용하고

쉽게 접근 - 그것은 시간/자원으로 변환됩니다 효율성에 대한 통찰력을 제공합니다.

저장 프로 시저에 대한 진짜 통찰력을 원하면 tkprof을 사용하여 추적 실행을 살펴보십시오. 여기에 an article on it이 있습니다.

+0

. 내 SP가 두 개의 커서를 반환하는 경우 어떻게 설명 계획을 사용합니까? 기본적으로 SP 이름은 my_sp입니다. 두 개의 매개 변수를 사용하고 두 개의 커서를 반환합니다. – drake

+0

@drake : explain plan 출력은 커서에 사용 된 쿼리의 효율성을 기반으로합니다. http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9010.htm 'tkprof' 결과물이 여러분이 찾고있는 것입니다. –

2

쿼리를 실행할 수 있으면 DBMS_PROFLIER 기능에 익숙해지는 것이 좋습니다. Oracle PL/SQL Profiler는 PL/SQL 코드의 런타임 동작에 대한 통계를 제공하는 데 도움이되는 도구입니다. 이 도구는 PL/SQL 소스 코드에 대한 정보를 수집하고 실행하여 테이블에 저장합니다. 실행이 완료되면 당신은 결정하기 위해 저장된 프로파일 데이터를보고 할 수 있습니다 :

  • 라인이 는
  • 의 각 행의 최소, 최대, 평균 실행 시간을 실행 된 총 횟수 코드
  • 얼마나 SQL 문 (실제 라인 분석 기간 동안 실행)
완료
  • 코드 검사를 실행 로했다

    프로파일 러 실행에 대한이 정보 중 하나가 요약되어 튜닝에서 가장 많은 이익을 얻을 수있는 소스 코드 또는 SQL 문을 결정할 수 있습니다.

    DBMS_PROFILER 패키지의 Oracle 설명서는 10g의 경우 here입니다.

    Metalink Doc 243755.1에는 프로파일 링 실행을위한 예쁜 HTML 출력을 생성하는 스크립트가 있습니다.

    PROFSUM.SQL은 수집 된 데이터를보고하는 또 다른 스크립트로 here입니다.

  • 1

    나는 이런 종류의 작업을 많이하며 좋은 로깅 도구를 사용하는 것이 좋습니다. 항상 문제는 하나 이상의 SQL DML 문 (특히 UPDATES 및 DELETES)이됩니다. timestamp 컬럼과 함께 테이블에 쓰고 (AUTONOMOUS_TRANSACTION을 사용하여) 간단한 SQL 프로 시저를 작성하면 모든 SQL에 대한 호출을 호출하여 시간이 어디로 가고 있는지 신속하게 식별 할 수 있습니다. 필자는 성숙한 정교한 패키지를 개발하여 이와 같이 PL/SQL 코드를 계측하고 프로덕션 코드의 실시간 모니터링을 위해 - 사본을 원할 경우 나에게 연락하십시오.

    슬프게도 대부분의 개발자는 DBMS_OUTPUT이 문제를 해결할 것이라고 생각하는 것처럼 보입니다.

    기타 오라클 추적 도구는 확실히 도움이되지만 사용하기가 조금 더 어렵습니다.

    마지막으로 엔터프라이즈 관리자를 사용하고 일정 기간 동안 스냅 샷을 분석하십시오.상위 10 개의 SQL 쿼리를 살펴보고 SQL Advisor를 사용하는 것이 좋습니다.

    도움이 되길 ...

    관련 문제