Amazon Aurora
Aurora 사용 설명서 (API 버전 2014-10-31)

실행 계획 캡처

수동 계획 캡처를 사용해 특정 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는 PostgreSQL SQL로 표현할 수 없는 이름이 지정되지 않은 준비된 설명문이나 대량 모드 설명문을 사용합니다.

계획을 자동으로 캡처하려면

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

  2. DB 인스턴스를 다시 시작합니다.

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

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

    일부 파라미터를 수정하여 처리량에 가장 큰 영향을 미치거나 가장 오랫동안 실행되거나 변동성이 가장 큰 설명문에 대해 계획을 캡처할 수 있습니다. 하지만 이 확장된 자동 계획 캡처 모드에서는 상당한 성능 오버헤드가 발생합니다.

자동 계획 캡처를 끄려면

  • DB 인스턴스 수준의 파라미터 그룹에서 apg_plan_mgmt.capture_plan_baselines 파라미터를 off로 설정합니다.

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

또한 설명문의 통계 속성에 따라 자동으로 캡처할 SQL 문을 식별할 수도 있습니다. 자세한 내용은 통계를 사용하여 SQL 문 식별 단원을 참조하십시오.

통계를 사용하여 SQL 문 식별

자동 계획 캡처를 사용하면 통계 속성으로 관리할 SQL 문을 식별할 수 있습니다. SQL 문의 통계에 액세스하려면 pg_stat_statements 확장을 설치합니다.

쿼리 계획 관리는 이러한 통계에 액세스하는 파라미터를 제공합니다. 이러한 파라미터를 설정하여 관리할 SQL 문을 식별할 수 있도록 최적화 프로그램에 기준을 제공합니다. 자동 계획 캡처를 수행하는 동안 최적화 프로그램은 통계 기준에 맞는 설명문에 대한 계획을 캡처합니다.

다음 파라미터를 사용하여 관리할 SQL 문에 대한 통계 기준을 정의합니다.

파라미터 설명
apg_plan_mgmt.pgss_min_calls 통계가 실행된 횟수 자세한 내용은 apg_plan_mgmt.pgss_min_calls 파라미터를 참조하십시오.
apg_plan_mgmt.pgss_min_total_time_ms 설명문의 총 실행 시간입니다. 자세한 내용은 apg_plan_mgmt.pgss_min_total_time_ms 파라미터를 참조하십시오.
apg_plan_mgmt.pgss_min_mean_time_ms 설명문의 평균 실행 시간입니다. 자세한 내용은 apg_plan_mgmt.pgss_min_mean_time_ms 파라미터를 참조하십시오.
apg_plan_mgmt.pgss_min_stddev_time_ms 설명문의 실행 시간 표준 편차입니다. 자세한 내용은 apg_plan_mgmt.pgss_min_stddev_time_ms 파라미터를 참조하십시오.

참고

이러한 통계를 사용하여 관리할 SQL 문을 식별할 경우 애플리케이션의 성능이 영향을 받습니다.

통계를 사용하여 관리할 설명문을 식별하려면 먼저 pg_stat_statements 확장을 설치해야 합니다. 설치 및 그 밖의 자세한 내용은 PostgreSQL pg_stats_statements 설명서를 참조하십시오.

다음 절차에서는 통계 기준에 따라 관리할 SQL 문을 식별하고 모든 일치하는 설명문에 대해 계획을 자동으로 캡처하는 방법을 보여줍니다.

SQL 문 통계에 따라 계획을 캡처하려면

참고

DB 인스턴스에 대한 파라미터 그룹에서 다음 apg_plan_mgmt 파라미터를 설정한 후, DB 인스턴스를 다시 시작합니다. 파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.

  1. apg_plan_mgmt.capture_plan_baselines 파라미터를 automatic으로 설정하여 자동 계획 캡처를 켭니다.

  2. apg_plan_mgmt.use_plan_baselinestrue로 설정하여 추가 계획을 계속 캡처해야 할 때 최적화 프로그램이 관리형 계획을 사용하도록 설정합니다. 계획을 캡처만 하고 아직은 사용하지 않으려는 경우 false 값을 설정합니다.

  3. 통계 기준을 설정하여 관리할 SQL 문을 식별합니다.

    예를 들면 apg_plan_mgmt.pgss_min_calls를 3으로 설정하여 최적화 프로그램에 3회 이상 실행되는 설명문에 대해서만 계획을 저장하도록 지정합니다. apg_plan_mgmt.pgss_min_total_time_ms를 30000으로 설정하면 최적화 프로그램에 30초 이상 실행되는 설명문에 대해 계획을 저장하도록 지정됩니다.

  4. DB 인스턴스를 다시 시작합니다.

  5. pg_stat_statements 확장을 활성화하여 이 DB 인스턴스에 사용할 수 있는 SQL 문에 대해 통계를 생성합니다.

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

애플리케이션이 실행될 때 최적화 프로그램에서 각 일치하는 설명문에 대해 계획을 캡처합니다.