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

관리형 계획 사용

최적화 프로그램에서 관리형 설명문에 대해 캡처한 계획을 사용하려면 파라미터 apg_plan_mgmt.use_plan_baselinestrue로 설정합니다. 다음은 로컬 인스턴스 예제입니다.

SET apg_plan_mgmt.use_plan_baselines = true;

애플리케이션이 실행되는 동안 이 설정을 사용하면 최적화 프로그램이 각각의 관리형 설명문에 대해 유효하고 활성화된 최소 비용, 기본 또는 승인된 계획을 사용합니다.

최적화 프로그램에서 실행할 계획을 선택하는 방식

실행 계획의 비용은 최적화 프로그램에서 서로 다른 계획을 비교할 때 계산하는 추정치입니다. 최적화 프로그램 비용은 계획에서 사용하는 CPU 및 I/O 작업을 포함하는 여러 요인에 따라 달라집니다. PostgreSQL 쿼리 플래너 비용에 대한 자세한 내용은 PostgreSQL documentation on query planning을 참조하십시오.

다음 흐름도는 쿼리 계획 관리 최적화 프로그램에서 실행할 계획을 선택하는 방식을 보여줍니다.


                    쿼리 계획 관리 워크플로우

이 흐름은 다음과 같습니다.

  1. 최적화 프로그램은 모든 SQL 문을 처리할 때 최소 비용 계획을 생성합니다.

  2. 최적화 프로그램에서 쿼리 계획 관리 기능을 사용하지 않고 생성된 계획을 단순히 실행하기만 합니다. 다음 파라미터 설정 중 하나 또는 두 개를 설정하는 경우 최적화 프로그램이 쿼리 계획 관리를 사용합니다.

    • apg_plan_mgmt.capture_plan_baselinesmanual 또는automatic으로

    • apg_plan_mgmt.use_plan_baselines true

  3. 다음이 모두 true일 경우 최적화 프로그램이 생성된 계획을 즉시 실행합니다.

    • 최적화 프로그램의 계획이 SQL 문의 apg_plan_mgmt.dba_plans 보기에 이미 있습니다.

    • 계획의 상태가 approved 또는 preferred입니다.

  4. apg_plan_mgmt.capture_plan_baselines 파라미터가 manual 또는 automatic인 경우 최적화 프로그램이 계획 캡처 처리를 진행합니다.

    최적화 프로그램의 계획 캡처 방식에 대한 자세한 내용은 실행 계획 캡처 단원을 참조하십시오.

  5. apg_plan_mgmt.use_plan_baselinesfalse이면 최적화 프로그램이 생성된 계획을 실행합니다.

  6. 최적화 프로그램의 계획이apg_plan_mgmt.dba_plans 보기에 없으면 최적화 프로그램이 해당 계획을 새 unapproved 계획으로 캡처합니다.

  7. 다음이 모두 true일 경우 최적화 프로그램이 생성된 계획을 실행합니다.

    • 최적화 프로그램의 계획이 rejected 또는 disabled 계획이 아닙니다.

    • 계획의 총 비용이 미승인 실행 계획 임계값보다 작습니다.

    최적화 프로그램이 거부된 상태의 계획이나 비활성화된 계획을 실행하지 않습니다. 대부분의 경우 최적화 프로그램이 미승인 계획을 실행하지 않습니다. 하지만 apg_plan_mgmt.unapproved_plan_execution_threshold 파라미터의 값을 설정하고 계획의 총 비용이 이 임계값보다 작으면 최적화 프로그램이 미승인 계획을 실행합니다. 자세한 내용은 apg_plan_mgmt.unapproved_plan_execution_threshold 파라미터를 참조하십시오.

  8. 관리형 설명문에 활성화되고 유효한 기본 계획이 있는 경우, 최적화 프로그램에서 최소 비용 계획을 실행합니다.

    유효 계획은 최적화 프로그램에서 실행할 수 있는 계획입니다. 관리형 계획은 다양한 이유로 유효하지 않은 상태가 될 수 있습니다. 예를 들면 종속된 객체(파티셔닝된 테이블의 파티션이나 인덱스)가 제거되면 계획이 유효하지 않게 됩니다.

  9. 최적화 프로그램은 관리형 설명문의 활성화 및 유효 상태인 승인된 계획에서 최소 비용 계획을 결정합니다. 그런 다음 최적화 프로그램은 최소 비용 승인된 계획을 실행합니다.

최적화 프로그램에서 사용할 계획 분석

apg_plan_mgmt.use_plan_baselines 파라미터가 true로 설정된 경우 EXPLAIN ANALYZE SQL 문을 사용하여 최적화 프로그램에서 해당 설명문을 실행해야 하는 경우에 사용할 계획을 표시할 수 있습니다. 다음은 예제입니다.

EXPLAIN ANALYZE EXECUTE rangeQuery (1,10000); QUERY PLAN -------------------------------------------------------------------------- Aggregate (cost=393.29..393.30 rows=1 width=8) (actual time=7.251..7.251 rows=1 loops=1) -> Index Only Scan using t1_pkey on t1 t (cost=0.29..368.29 rows=10000 width=0) (actual time=0.061..4.859 rows=10000 loops=1) Index Cond: ((id >= 1) AND (id <= 10000)) Heap Fetches: 10000 Planning time: 1.408 ms Execution time: 7.291 ms Note: An Approved plan was used instead of the minimum cost plan. SQL Hash: 1984047223, Plan Hash: 512153379

최적화 프로그램이 실행할 계획을 표시하지만, 이 예제에서는 비용이 더 저렴한 계획을 찾았습니다. 이 경우, 계획 자동 캡처에 설명된 바와 같이 자동 계획 캡처를 켜서 이 새로운 최소 비용 계획을 캡처합니다.

최적화 프로그램이 새 계획을 승인되지 않은 계획으로 캡처합니다. apg_plan_mgmt.evolve_plan_baselines 함수를 사용하여 계획을 비교하고 승인됨, 거부됨 또는 비활성화됨으로 변경할 수 있습니다. 자세한 내용은 계획 성능 평가 단원을 참조하십시오.