데이터베이스 구조 또는 권한 부여에 대한 변경 후 액세스 플랜에 대한 변경사항 찾기 및 수정

데이터베이스 구조 업데이트(예: 테이블 변경, 인덱스 작성 또는 인덱스 삭제) 및 사용자 권한 부여 수정사항은 SQL문에 대한 액세스 플랜을 변경하고 성능에 영향을 줄 수 있습니다.

시작하기 전에

전제조건이 만족되는지 확인하십시오.

이 태스크 정보

이 프로시저에서는 데이터베이스 구조 또는 권한 부여를 변경하기 전에, 사용자 애플리케이션에 있는 SQL문을 포함하는 쿼리 워크로드를 작성하고 Explain합니다. 그런 다음 데이터베이스 구조나 권한 부여를 변경합니다. 마지막으로, 애플리케이션의 SQL문을 포함하는 또 다른 쿼리 워크로드를 작성 및 Explain하고 첫 번째 쿼리 워크로드에 대한 EXPLAIN 스냅샷을 두 번째 쿼리 워크로드에 대한 EXPLAIN 스냅샷과 비교합니다.

이 프로시저가 두 개의 개별 쿼리 워크로드를 사용하지만, 단일 쿼리 워크로드를 작성하고 이를 Explain하고, 데이터베이스 구조나 권한 부여를 변경한 후 쿼리 워크로드를 다시 Explain할 수 있습니다. 그런 다음 두 EXPLAIN 스냅샷을 비교할 수 있습니다.

프로시저

데이터베이스 구조 또는 권한 부여에 대한 변경으로 인해 액세스 플랜에 대한 변경사항을 식별하고 다루려면 다음을 수행하십시오.

  1. 애플리케이션에 있는 SQL문의 쿼리 워크로드를 작성하십시오.
    1. SQL문을 캡처하십시오.
    2. SQL문을 캡처한 후, 모든 명령문에서 쿼리 워크로드 작성 단추를 클릭하십시오.
    3. 입력 워크로드 이름 및 설명 창에서 새 쿼리 워크로드를 식별하는 정보를 지정하십시오.
    관리 섹션의 워크로드 관리 및 조정 페이지가 열립니다. 새 쿼리 워크로드가 이 페이지의 테이블에 표시됩니다. 쿼리 워크로드의 상태는 CAPTURED입니다.
  2. 쿼리 워크로드를 Explain하십시오.
    참고: 다음 소스에서 SQL문을 캡처했고 쿼리 워크로드를 작성할 때 EXPLAIN 정보를 저장할 것으로 선택한 경우, 쿼리 워크로드를 Explain할 필요가 없습니다.
    • Linux, UNIX 및 Windows용 DB2: ACTIVITIES 이벤트 모니터, EXPLAIN 테이블, 패키지, 패키지 캐시
    • z/OS용 DB2: 카탈로그 플랜 및 패키지, 동적 명령문 캐시
    1. 워크로드 관리 페이지에서 쿼리 워크로드를 선택하고 추가 조치 필드에서 선택된 워크로드 Explain을 선택하십시오.
    2. EXPLAIN 정보 수집 창에서, 쿼리 워크로드에 있는 SQL문의 런타임 환경에 대한 선택값을 지정하십시오.
  3. DB2에서 데이터베이스 오브젝트 또는 권한 부여를 변경하십시오. 완료한 후 명령문이 정적이면 EXPLAIN 옵션을 YES로, ACTION 옵션을 REPLACE로 설정하고 패키지를 리바인드하십시오.
  4. 애플리케이션에 있는 SQL문의 또 다른 쿼리 워크로드를 작성하십시오.
    1. SQL문을 캡처하십시오.
    2. SQL문을 캡처한 후, 모든 명령문에서 쿼리 워크로드 작성 단추를 클릭하십시오.
    3. 입력 워크로드 이름 및 설명 창에서 새 쿼리 워크로드를 식별하는 정보를 지정하십시오.
  5. 쿼리 워크로드를 Explain하십시오.
    참고: 다음 소스에서 SQL문을 캡처했고 쿼리 워크로드를 작성할 때 EXPLAIN 정보를 저장할 것으로 선택한 경우, 쿼리 워크로드를 Explain할 필요가 없습니다.
    • Linux, UNIX 및 Windows용 DB2: ACTIVITIES 이벤트 모니터, EXPLAIN 테이블, 패키지, 패키지 캐시
    • z/OS용 DB2: 카탈로그 플랜 및 패키지, 동적 명령문 캐시
    1. 워크로드 관리 페이지에서 쿼리 워크로드를 선택하고 추가 조치 필드에서 선택된 워크로드 Explain을 선택하십시오.
    2. EXPLAIN 정보 수집 창에서, 쿼리 워크로드에 있는 SQL문의 런타임 환경에 대한 선택값을 지정하십시오.
  6. 두 쿼리 워크로드를 비교하십시오.
    1. Workflow Assistant의 왼쪽에 있는 관리 탭을 클릭하십시오.
    2. 워크로드 관리 페이지에서, 2단계에서 Explain한 쿼리 워크로드를 선택하십시오. 그런 다음 비교 단추를 클릭하십시오.
    3. 다른 워크로드 또는 스냅샷과 비교하려면 선택 창에서, 선택된 워크로드의 액세스 플랜을 또 다른 워크로드의 액세스 플랜과 비교 옵션을 선택하고 확인을 클릭하십시오.
    4. 액세스 플랜을 다른 워크로드의 액세스 플랜과 비교 마법사의 단계를 수행하십시오.
    5. 비교가 완료될 때, 액세스 플랜 및 계산된 비용에 대한 변경사항을 찾으십시오. 조치가 필요한 변경이 없는 경우, 비교를 완료합니다. 그러나 조치가 필요한 변경이 있으면 다음 단계를 계속하십시오.
  7. 성능 문제점을 갖는 SQL문을 포함하는 쿼리 워크로드를 작성 및 튜닝하려는 경우, 비교 섹션의 워크로드 EXPLAIN 스냅샷 및 SQL문별로 비교 결과 보기 페이지의 추가 조치 필드에서 튜닝을 위한 새 쿼리 워크로드 작성을 선택하십시오. 새 쿼리 워크로드 생성 마법사가 열립니다. 이 마법사에서 쿼리 워크로드에 SQL문을 포함하기 위한 기준을 설정할 수 있습니다. 쿼리 워크로드가 작성된 후, 튜닝을 위해 이러한 일반 단계를 참조할 수 있습니다.
  8. 하나 이상의 문제가 있는 명령문에 대한 최적화 힌트 또는 최적화 프로파일을 작성하려는 경우 다음 단계 중 하나를 수행하십시오.
    1. 액세스 플랜을 비교한 명령문 목록에 있는 명령문을 선택하십시오.
    2. 목록 맨 위에 있는 세부사항 보기 단추를 클릭하십시오.
    3. SQL문 액세스 플랜별로 비교 결과 보기 페이지의 맨 위에서 최적화 힌트 작성 단추나 최적화 프로파일 작성 단추를 클릭하십시오. 나타나는 단추는 사용자가 작업 중인 데이터베이스 연결에 따라 다릅니다.
  9. 이전 액세스 플랜 세트가 더 낫기 때문에 해당 액세스 플랜을 사용하려는 경우, 비교 섹션의 워크로드 EXPLAIN 스냅샷 및 SQL문별로 비교 결과 보기 페이지의 추가 조치 필드에서 모든 SQL문에 대한 액세스 플랜 잠금을 선택하십시오. 액세스 플랜 잠금을 위한 스크립트 생성 창에서 필수 정보를 지정하십시오. 스크립트를 생성한 후 검토하고 저장하십시오. 그런 다음, 사용자의 DB2 버전에 대한 지시사항에 따라서 스크립트를 배치할 수 있습니다.
  10. SQL문이 정적이고 문제가 있는 명령문의 쿼리 워크로드를 튜닝했거나 최적화 힌트 또는 최적화 프로파일을 작성했거나 액세스 플랜을 잠근 경우, 패키지를 리바인드하십시오. 미래의 비교에서 바인드 시간 EXPLAIN 스냅샷을 사용할 수 있기를 원하는 경우 EXPLAIN 옵션을 YES로 설정하십시오.

피드백