Aurora PostgreSQL 실행 계획 캡처 - Amazon Aurora

Aurora PostgreSQL 실행 계획 캡처

Aurora PostgreSQL 쿼리 계획 관리에서는 쿼리 실행 계획을 캡처하기 위한 두 가지 모드, 자동 또는 수동을 제공합니다. apg_plan_mgmt.capture_plans_baselines의 값을 automatic 또는 manual로 설정하여 모드를 선택합니다. 수동 계획 캡처를 사용해 특정 SQL 문에 대한 실행 계획을 캡처할 수 있습니다. 또는 자동 계획 캡처를 사용하여 애플리케이션이 실행될 때 두 번 이상 실행되는 모든 (또는 가장 느린) 계획을 캡처할 수 있습니다.

계획을 캡처하면 최적화 프로그램이 관리형 설명문에 대해 캡처된 첫 번째 계획의 상태를 approved로 설정합니다. 최적화 프로그램은 관리형 설명문에 대해 캡처된 추가 계획의 상태를 항상 unapproved로 설정합니다. 그러나 두 가지 이상의 계획이 approved 상태로 저장되는 경우가 가끔 있을 수 있습니다. 이런 일은 설명문에 대해 여러 계획이 병렬적으로 생성될 때와 설명문의 첫 번째 계획이 커밋되기 전에 발생할 수 있습니다.

dba_plans 보기에 캡처 및 저장할 수 있는 최대 계획 수를 제어하려면 DB 인스턴스 수준의 파라미터 그룹에서 apg_plan_mgmt.max_plans 파라미터를 설정합니다. apg_plan_mgmt.max_plans 파라미터를 변경하는 경우 새 값을 적용하려면 DB 인스턴스를 재부팅해야 합니다. 자세한 내용은 apg_plan_mgmt.max_plans 파라미터를 참조하세요.

특정 SQL 문에 대해 계획을 수동으로 캡처

관리해야 할 SQL 문 세트를 알고 있는 경우 이러한 설명문을 SQL 스크립트 파일에 추가한 후 계획을 수동으로 캡처합니다. 다음은 SQL 문 세트에 대해 쿼리 계획을 수동으로 캡처하는 방법을 보여주는 psql 예제입니다.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

각 SQL 문에 대한 계획을 캡처하면 최적화 프로그램이 새 행을 apg_plan_mgmt.dba_plans 보기에 추가합니다.

SQL 스크립트 파일에서 EXPLAIN 또는 EXPLAIN EXECUTE 문을 사용하는 것이 좋습니다. 관심이 있는 계획을 모두 캡처하려면 파라미터 값에 충분한 변형을 포함해야 합니다.

최적화 프로그램의 최소 비용 계획보다 더 나은 계획을 알고 있으면 최적화 프로그램에서 더 나은 계획을 사용하도록 강제할 수 있습니다. 이를 위해서는 최적화 프로그램 힌트를 하나 이상 지정해야 합니다. 자세한 내용은 pg_hint_plan을 사용하여 계획 수정 섹션을 참조하세요. unapprovedapproved 계획의 성능을 비교하고 이러한 계획을 승인, 거부 또는 삭제하려면 계획 성능 평가 단원을 참조하십시오.

계획 자동 캡처

다음과 같은 상황에서는 자동 계획 캡처를 사용합니다.

  • 관리할 특정 SQL 문을 모르는 경우

  • 관리할 SQL 문이 수백 개 또는 수천 개인 경우

  • 애플리케이션에서 클라이언트 API를 사용하는 경우 예를 들면, JDBC는 psql로 표현할 수 없는 이름이 지정되지 않은 준비된 명령문이나 대량 모드 명령문을 사용합니다.

계획을 자동으로 캡처하려면
  1. DB 인스턴스 수준의 파라미터 그룹에서 apg_plan_mgmt.capture_plan_baselinesautomatic으로 설정하여 자동 계획 캡처를 켭니다. 자세한 정보는 DB 파라미터 그룹의 파라미터 수정을 참조하십시오.

  2. DB 인스턴스를 재부팅합니다.

  3. 애플리케이션이 실행되면 최적화 프로그램이 두 번 이상 실행되는 각 SQL 문에 대해 계획을 캡처합니다.

    애플리케이션이 기본 쿼리 계획 관리 파라미터 설정으로 실행되면 최적화 프로그램이 두 번 이상 실행되는 각 SQL 문에 대해 계획을 캡처합니다. 기본값 사용 중 모든 계획을 캡처하는 작업은 실행 시간 오버헤드가 거의 발생하지 않으며 프로덕션 상태에서 활성화할 수 있습니다.

자동 계획 캡처를 끄려면
  • DB 인스턴스 수준의 파라미터 그룹에서 apg_plan_mgmt.capture_plan_baselines 파라미터를 off로 설정합니다.

미승인 계획의 성능을 측정하고 이러한 계획을 승인, 거부 또는 삭제하려면 계획 성능 평가 단원을 참조하세요.