성능 개선 도우미 대시보드를 사용한 Oracle 실행 계획 분석 - Amazon Relational Database Service

성능 개선 도우미 대시보드를 사용한 Oracle 실행 계획 분석

Oracle Database에서 DB 로드를 분석할 때 DB 로드에 가장 많이 기여하는 계획을 알고 싶을 수 있습니다. 예를 들어 지정된 시간의 상위 SQL 문이 다음 표에 표시된 계획을 사용하고 있을 수 있습니다.

상위 SQL 계획

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 10

계획 A

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 521

계획 B

SELECT SUM(s_total) FROM sales WHERE region = 10

계획 A

SELECT * FROM emp WHERE emp_id = 1000

계획 C

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 72

계획 A

성능 개선 도우미의 계획 기능을 사용하여 다음을 수행할 수 있습니다.

  • 상위 SQL 쿼리에서 사용하는 계획을 찾습니다.

    예를 들어 대부분의 DB 로드가 계획 A와 계획 B를 사용하는 쿼리에 의해 생성되고 계획 C를 사용하는 비율은 적음을 알 수 있습니다.

  • 동일한 쿼리에 대해 여러 계획을 비교합니다.

    앞의 예에서 3개의 쿼리는 제품 ID를 제외하고 동일합니다. 두 쿼리는 계획 A를 사용하지만 한 쿼리는 계획 B를 사용합니다. 두 계획의 차이를 보려면 성능 개선 도우미를 사용할 수 있습니다.

  • 쿼리가 새 계획으로 전환된 시기를 확인합니다.

    쿼리가 계획 A를 사용한 다음 특정 시간에 계획 B로 전환했음을 확인할 수 있습니다. 이 시점에서 데이터베이스의 변경 사항이 있었나요? 예를 들어 테이블이 비어 있는 경우 옵티마이저는 전체 테이블 스캔을 선택할 수 있습니다. 테이블에 백만 개의 행이 로드되면 옵티마이저가 인덱스 범위 스캔으로 전환할 수 있습니다.

  • 비용이 가장 많이 드는 계획의 특정 단계로 드릴다운합니다.

    예를 들어 장기 실행 쿼리의 경우 동등 조인에서 조인 조건 누락이 표시될 수 있습니다. 이 누락된 조건은 두 테이블의 모든 행을 조인하는 데카르트 조인을 강제 실행합니다.

성능 개선 도우미의 계획 캡처 기능을 사용하여 이전 태스크를 수행할 수 있습니다. 대기 이벤트 및 상위 SQL을 기준으로 Oracle 쿼리를 분할할 수 있는 것처럼 계획 차원을 기준으로 Oracle 쿼리를 분할할 수 있습니다.

이 기능에 대한 리전, DB 엔진 및 인스턴스 클래스 지원 정보는 성능 개선 도우미 기능에 대한 Amazon RDS DB 엔진, 리전 및 인스턴스 클래스 지원 섹션을 참조하세요.

콘솔을 사용하여 Oracle 실행 계획 분석
  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 성능 개선 도우미을 선택합니다.

  3. Oracle DB 인스턴스를 선택합니다. 선택한 DB 인스턴스에 대한 성능 개선 도우미 대시보드가 표시됩니다.

  4. 데이터베이스 로드(DB 로드)(Database load (DB load)) 섹션에서 분할 기준(Slice by) 옆에 있는 계획(Plans)을 선택합니다.

    평균 활성 세션 차트는 상위 SQL 문이 사용하는 계획을 보여줍니다. 계획 해시 값은 색상으로 구분된 사각형의 오른쪽에 나타납니다. 각 해시 값은 계획을 고유하게 식별합니다.

    
					계획을 기준으로 분할
  5. 상위 SQL(Top SQL) 탭까지 아래로 스크롤합니다.

    다음 예에서 상위 SQL 다이제스트에는 2개의 계획이 있습니다. 문장의 물음표를 보면 다이제스트임을 알 수 있습니다.

    
					다이제스트 계획 선택
  6. 다이제스트를 선택하여 구성 요소 문으로 확장합니다.

    다음 예에서 SELECT 문은 다이제스트 쿼리입니다. 다이제스트의 구성 요소 쿼리는 2개의 다른 계획을 사용합니다. 계획의 색상은 데이터베이스 로드 차트에 해당합니다. 다이제스트의 총 계획 수는 두 번째 열에 표시됩니다.

    
					다이제스트 계획 선택
  7. 아래로 스크롤하여 다이제스트 쿼리 계획(Plans for digest query) 목록에서 비교할 2개의 계획(Plans)을 선택합니다.

    쿼리에 대해 한 번에 하나 또는 2개의 계획을 볼 수 있습니다. 다음 스크린샷에서는 해시 2032253151 및 해시 1117438016과 함께 다이제스트의 두 계획을 비교합니다. 다음 예에서 이 다이제스트 쿼리를 실행하는 평균 활성 세션의 62%는 왼쪽 계획을 사용하고 있는 반면 38%는 오른쪽 계획을 사용하고 있습니다.

    
					나란히 계획 비교

    이 예에서는 계획이 중요한 방식으로 다릅니다. 계획 2032253151의 2단계는 인덱스 스캔을 사용하는 반면 계획 1117438016은 전체 테이블 스캔을 사용합니다. 행 수가 많은 테이블의 경우 인덱스 스캔을 사용하면 단일 행의 쿼리가 거의 항상 더 빠릅니다.

    
					나란히 계획 비교
  8. (선택 사항) 복사(Copy)를 선택하여 클립보드에 계획을 복사하거나 다운로드(Download)를 선택하여 하드 드라이브에 계획을 저장합니다.