Linux, UNIX 및 Windows용 DB2에서 실행되는 SQL문에 대한 최적화 프로파일 작성 및 배치

최적화 프로파일을 사용하여 SQL문에 대한 액세스 플랜 작성 방법에 직접 영향을 줄 수 있습니다. 이 프로파일에서 사용할 인덱스, SQL문이 참조하는 테이블에 액세스하는 방법, 사용할 조인 메소드 및 기타 설정을 지정할 수 있습니다.

시작하기 전에

이 태스크 정보

최적화 프로파일은 프로파일이 사용 가능한 동안 실행되는 모든 데이터 처리 언어(DML)에 적용되는 전역 가이드라인을 포함할 수 있으며 패키지의 개별 DML문에 적용되는 특정 가이드라인도 포함할 수 있습니다.

프로시저

최적화 프로파일 작성, 유효성 확인 및 배치를 위해 Visual Editor를 열려면 다음을 수행하십시오.

  1. 조정하려는 SQL문을 캡처하십시오. 단일 쿼리 튜닝을 위해 SQL문을 캡처할 수 있는 위치를 참조하십시오.
  2. 캡처된 명령문 중 하나를 선택한 후 어드바이저 및 도구 호출 단추를 클릭하십시오. 호출 섹션에서 단일 어드바이저 및 분석 도구 실행 페이지가 열립니다.
  3. 워크플로우 지원 프로그램 왼쪽에서 단일 쿼리 아래의 고급을 펼치고 최적화 프로파일 작성을 선택하십시오.

다음에 수행할 작업

최적화 프로파일을 사용하여 액세스 플랜 사용자 정의 페이지의 섹션을 사용하여 최적화 프로파일에 대한 가이드라인을 지정하십시오.

이 페이지는 세 섹션으로 구성됩니다.
결합 다이어그램 및 결합 시퀀스 다이어그램
이 섹션은 페이지의 맨 위 왼쪽 구석에 표시됩니다.

결합 다이어그램은 명령문이 참조하는 테이블을 노드로 표시합니다. 노드 간 경계는 테이블간 관계를 표시합니다. 경계가 표시하는 술어의 유형은 경계와 함께 표시됩니다. 술어는 로컬 술어 또는 Join 술어가 될 수 있습니다. 노드를 두 번 클릭하여 액세스 플랜에서 해당 테이블에 액세스하는 방식을 변경할 수 있습니다.

결합 시퀀스 다이어그램은 SQL문에 대한 액세스 플랜에서 결합 시퀀스를 표시합니다.

테이블을 나타내는 각 노드는 다음 정보를 표시합니다:
  • DB2 옵티마이저에서 재작성한 명령문의 테이블 이름
  • 완전한 테이블 이름
  • 테이블의 카디널리티
  • 테이블에 지정된 액세스 유형
편집 가능한 결합 시퀀스 다이어그램
이 섹션은 페이지의 맨 위 오른쪽 구석에 표시됩니다.

결합 유형을 변경하거나 결합을 추가 또는 삭제하여 결합 시퀀스를 편집할 수 있습니다. 또한 SQL문이 참조하는 테이블을 나타내는 노드를 추가하고 제거할 수도 있습니다.

최적화 프로파일의 가이드라인
이 섹션은 페이지의 맨 아래 부분에 표시됩니다.
최적화 프로파일의 가이드라인 섹션을 사용하여 다음 태스크를 완료할 수 있습니다.
최적화 프로파일을 사용하는 모든 명령문에 대한 가이드라인 설정
  • 구체화된 쿼리테이블 사용 또는 사용 안함. 사용하도록 설정한 경우 어떤 MQT에서 사용을 고려할 지를 지정할 수 있습니다.
  • 전산 파티션 그룹 최적화의 고려사항 사용 또는 사용 안함. 이 고려사항을 사용으로 설정한 경우, DB2 옵티마이저에 대한 파티션 그룹을 지정하여 전산 파티션 그룹 최적화의 사용을 고려할 수 있습니다.
  • REOPT 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • DEGREE 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • QUERYOPT 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • 실시간 통계 콜렉션 사용 또는 사용 안함. 콜렉션 사용으로 설정한 경우 DB2 옵티마이저에서 이러한 통계 수집을 허용할 최대 시간을 지정할 수 있습니다. 옵티마이저에서 통계 수집에 시간이 추가로 필요하다고 예상하는 경우 통계를 수집하지 않습니다.
  • MQT 강제 실행 사용
현재 SQL문에 대한 가이드라인 설정
  • REOPT 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • DEGREE 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • QUERYOPT 바인드 옵션 설정을 다른 값으로 겹쳐쓰기
  • 실시간 통계 콜렉션 사용 또는 사용 안함. 콜렉션 사용으로 설정한 경우 DB2 옵티마이저에서 이러한 통계 수집을 허용할 최대 시간을 지정할 수 있습니다. 옵티마이저에서 통계 수집에 시간이 추가로 필요하다고 예상하는 경우 통계를 수집하지 않습니다.
  • MQT 강제 실행 사용
원래 명령문을 구문적으로 동등한 최적화된 명령문으로 변환하는 쿼리 다시 쓰기 최적화 단계 중에 고려되는 변환에 적용되는 가이드라인을 설정합니다.
  • IN-LIST 술어 - 결합(predicate-to-join) 다시 쓰기 변환 사용 또는 사용 안함
  • NOT-EXISTS 술어 - 비결합(predicate-to-anti-join) 다시 쓰기 변환 사용 또는 사용 안함
  • NOT-IN 술어 - 비결합(predicate-to-anti-join) 다시 쓰기 변환 사용 또는 사용 안함
  • 서브쿼리- 결합(subquery-to-join) 다시 쓰기 변환 사용 또는 사용 안함
테이블에 액세스하는 방법 사용자 정의
  • 플랜 최적화 가이드라인 설정
  • 결합 다이어그램의 테이블을 두 번 클릭하여 테이블에 액세스하는 방법을 변경

문제에 대해 최적화 프로파일을 검사하여 프로파일을 배치하기 전에 이를 정정할 수 있습니다.

마지막으로, 최적화 프로파일을 배치할 수 있습니다. 배치란 최적화 프로파일을 SYSTOOLS.OPT_PROFILE 테이블의 행으로 삽입하는 것을 의미합니다.

OPTPROFILE 바인드 옵션을 사용하여 패키지 레벨에서 최적화 파일을 사용하는지를 지정하거나 CURRENT OPTIMIZATION PROFILE 특수 레지스터를 사용하여 명령문 레벨에서 최적화 프로파일을 사용하는지를 지정할 수 있습니다.

이 특수 레지스터에는 최적화를 위해 동적으로 준비된 명령문에서 사용하는 최적화 프로파일의 완전한 이름이 포함됩니다. CLI 애플리케이션의 경우 CURRENTOPTIMIZATIONPROFILE 클라이언트 구성 옵션을 사용하여 각 연결에 대해 이 특수 레지스터를 설정할 수 있습니다.


피드백