쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

Aurora PostgreSQL 쿼리 계획 관리를 위한 함수 참조 - Amazon Aurora

Aurora PostgreSQL 쿼리 계획 관리를 위한 함수 참조

apg_plan_mgmt 확장은 다음 함수를 제공합니다.

apg_plan_mgmt.copy_outline

지정된 SQL 계획 해시 및 계획 아웃라인을 대상 SQL 계획 해시 및 아웃라인에 복사하여 대상의 계획 해시 및 아웃라인을 덮어씁니다. 이 함수는 apg_plan_mgmt 2.3 이상 릴리스에서 사용할 수 있습니다.

구문

apg_plan_mgmt.copy_outline( source_sql_hash, source_plan_hash, target_sql_hash, target_plan_hash, force_update_target_plan_hash )
반환 값

복사가 성공하면 0을 반환합니다. 입력이 잘못된 경우 예외를 발생시킵니다.

Parameters

파라미터 설명
source_sql_hash 대상 쿼리에 복사할 plan_hash와 관련된 sql_hash ID입니다.
source_plan_hash 대상 쿼리에 복사할 plan_hash ID입니다.
target_sql_hash 소스 플랜 해시 및 아웃라인으로 업데이트할 쿼리의 sql_hash ID입니다.
target_plan_hash 소스 플랜 해시 및 아웃라인으로 업데이트할 쿼리의 plan_hash ID입니다.
force_update_target_plan_hash (선택 사항) target_sql_hash에 대한 소스 계획을 재현할 수 없는 경우에도 쿼리의 target_plan_hash ID가 업데이트됩니다. true로 설정하면 함수를 사용하여 관계 이름과 열이 일치하는 스키마 간에 계획을 복사할 수 있습니다.

사용 노트

이 함수를 사용하면 힌트를 사용하는 계획 해시 및 계획 개요를 다른 유사한 문에 복사할 수 있으므로, 대상 문에서 발생할 때마다 인라인 힌트 문을 사용하지 않아도 됩니다. 업데이트된 대상 쿼리 때문에 잘못된 계획이 생성되는 경우, 이 함수는 오류를 발생시키고 시도한 업데이트를 롤백합니다.

apg_plan_mgmt.delete_plan

관리형 계획을 삭제합니다.

구문

apg_plan_mgmt.delete_plan( sql_hash, plan_hash )
반환 값

삭제가 성공한 경우 0을 반환하고, 실패한 경우 -1을 반환합니다.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID.

apg_plan_mgmt.evolve_plan_baselines

이미 승인된 계획이 더 빠른지 여부 또는 쿼리 최적화 프로그램에서 최소 비용 계획으로 식별된 계획이 더 빠른지 여부를 확인합니다.

구문

apg_plan_mgmt.evolve_plan_baselines( sql_hash, plan_hash, min_speedup_factor, action )

반환 값

승인된 최상의 계획보다 빠르지 않은 계획 수.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID. sql_hash ID 값이 동일한 모든 계획의 평균을 구하려면 NULL을 사용합니다.
min_speedup_factor

최소 속도 향상 인수는 계획이 승인되려면 이미 승인된 계획 중 최상의 계획보다 몇 배 더 빨라야 하는지를 지정합니다. 또는 거부되거나 비활성화되려면 몇 배 더 느려야 하는지를 지정할 수도 있습니다.

이 값은 양수 부동 값입니다.

action

함수가 수행해야 할 작업입니다. 유효 값에는 다음이 포함됩니다. 대/소문자를 구분하지 않습니다.

  • 'disable' – 최소 속도 향상 인수를 충족하지 않는 각각의 일치하는 계획을 비활성화합니다.

  • 'approve' – 최소 속도 향상 인수를 충족하는 각각의 일치하는 계획을 활성화하고 상태를 로 설정합니다.approved

  • 'reject' – 최소 속도 향상 인수를 충족하지 않는 각각의 일치하는 계획의 경우, 상태를 로 설정합니다.rejected

  • NULL – 이 함수는 단순히 최소 속도 향상 인수를 충족하지 않아서 성능 이점을 없는 계획 수만 반환합니다.

사용 노트

계획 + 실행 시간이 설정한 인수만큼 최상의 승인된 계획보다 더 빠른지 여부에 따라 지정된 계획을 승인됨, 거부됨 또는 비활성화됨으로 설정합니다. 이 작업 파라미터를 'approve' 또는 'reject'로 설정하여 성능 기준을 충족하는 계획을 자동으로 승인하거나 거부할 수 있습니다. 또는 "(빈 문자열)로 설정하여 성능 실험을 수행한 후 보고서만 생성하고 아무런 작업도 취하지 않을 수 있습니다.

최근에 실행된 계획에 대해 apg_plan_mgmt.evolve_plan_baselines 함수를 무의미하게 다시 실행하는 일을 방지할 수 있습니다. 이를 위해서는 최근에 생성한 미승인 계획까지만 계획을 제한하십시오. 또는 최근 apg_plan_mgmt.evolve_plan_baselines 타임스탬프가 있는 승인된 계획에서만 last_verified 함수를 실행하지 않도록 할 수 있습니다.

성능 실험을 수행하여 기준 내 다른 계획과 각 계획의 계획 + 실행 시간을 비교합니다. 경우에 따라서는 설명문에 대해 계획 하나만 있고 해당 계획이 승인된 계획일 수 있습니다. 이러한 경우에는 계획의 계획 + 실행 시간과 아무런 계획도 사용하지 않을 때의 계획 + 실행 시간을 비교합니다.

각 계획의 증분형 이점(또는 단점)이 apg_plan_mgmt.dba_plans 열의 total_time_benefit_ms 보기에 기록됩니다. 이 값이 양수이면 기준에 이 계획을 포함할 경우 주목할 만한 성능 개선이 있는 것입니다.

각 후보 계획의 계획 + 실행 시간을 수집할 뿐만 아니라, last_verified 보기의 apg_plan_mgmt.dba_plans 열이 current_timestamp로 업데이트됩니다. last_verified 타임스탬프를 사용하면 최근에 성능이 확인된 계획에 대해 이 함수가 다시 실행되지 않도록 할 수 있습니다.

apg_plan_mgmt.get_explain_plan

지정한 SQL 문에 대한 EXPLAIN 문의 텍스트를 생성합니다.

구문

apg_plan_mgmt.get_explain_plan( sql_hash, plan_hash, [explainOptionList] )
반환 값

지정한 SQL 문에 대한 런타임 통계를 반환합니다. 간단한 explainOptionList 계획을 반환하려면 EXPLAIN 없이 사용합니다.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID.
explainOptionList

설명 옵션을 쉼표로 구분한 목록입니다. 유효한 값으로는 'analyze', 'verbose', 'buffers', 'hashes''format json'이 있습니다. explainOptionList가 NULL이거나 빈 문자열('')인 경우 이 함수는 통계 데이터 없이 EXPLAIN 문을 생성합니다.

사용 노트

explainOptionList의 경우 EXPLAIN 문에 사용하는 것과 동일한 옵션 중 하나를 사용할 수 있습니다. Aurora PostgreSQL 옵티마이저는 사용자가 EXPLAIN 문에 제공항하는 옵션 목록을 연결합니다.

apg_plan_mgmt.plan_last_used

공유 메모리에서 지정된 계획의 last_used 날짜를 반환합니다.

참고

공유 메모리의 값은 DB 클러스터의 기본 DB 인스턴스에서 항상 최신 상태입니다. 값은 apg_plan_mgmt.dba_plans 뷰의 last_used 열에 주기적으로 플러시됩니다.

구문

apg_plan_mgmt.plan_last_used( sql_hash, plan_hash )
반환 값

last_used 날짜를 반환합니다.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID.

apg_plan_mgmt.reload

계획을 apg_plan_mgmt.dba_plans 보기에서 공유 메모리로 다시 로드합니다.

구문

apg_plan_mgmt.reload()

반환 값

없음.

Parameters

없음.

사용 노트

다음 상황의 경우 reload를 호출합니다.

  • 새 계획이 복제본으로 전파될 때까지 기다리기 보다는 이 함수를 사용하여 읽기 전용 복제본의 공유 메모리를 즉시 새로 고칩니다.

  • 관리형 계획을 가져온 후에 사용합니다.

apg_plan_mgmt.set_plan_enabled

관리형 계획을 활성화하거나 비활성화합니다.

구문

apg_plan_mgmt.set_plan_enabled( sql_hash, plan_hash, [true | false] )

반환 값

설정이 성공한 경우 0을 반환하고, 실패한 경우 -1을 반환합니다.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID.
enabled

부울 값(true 또는 false):

  • true 값은 계획을 활성화합니다.

  • false 값은 계획을 비활성화합니다.

apg_plan_mgmt.set_plan_status

관리된 계획의 상태를 Approved, Unapproved, Rejected 또는 Preferred로 설정합니다.

구문

apg_plan_mgmt.set_plan_status( sql_hash, plan_hash, status )

반환 값

설정이 성공한 경우 0을 반환하고, 실패한 경우 -1을 반환합니다.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID.
status

다음 값 중 하나를 가진 문자열:

  • 'Approved'

  • 'Unapproved'

  • 'Rejected'

  • 'Preferred'

대문자를 사용하든 소문자를 사용하든 apg_plan_mgmt.dba_plans 보기에서 상태 값은 초기 대문자로 설정됩니다. 이러한 값에 대한 자세한 내용은 statusAurora PostgreSQL 호환 에디션의 apg_plan_mgmt.dba_plans 뷰에 대한 참조를 참조하세요.

apg_plan_mgmt.update_plans_last_used

공유 메모리에 저장됭 last_used 날짜로 계획 테이블을 즉시 업데이트합니다.

구문

apg_plan_mgmt.update_plans_last_used()

반환 값

없음.

Parameters

없음.

사용 노트

dba_plans.last_used 열에 대항하는 쿼리가 가장 최신 정보를 사용하도록 update_plans_last_used를 호출합니다. 만약 last_used 날짜가 즉시 업데이트되지 않는다면, 백그라운드 프로세스가 계획 테이블을 last_used 날짜로 1시간에 한 번씩(기본값) 업데이트합니다.

예를 들어, 특정 sql_hash가 있는 명령문이 느리게 실행되기 시작하면, 성능 회귀 분석이 시작된 이후 해당 명령문에 대해 어떤 계획이 실행되었는지 확인할 수 있습니다. 이렇게 하려면 먼저 공유 메모리의 데이터를 디스크로 플러시하여 last_used 날짜가 현재 날짜이고, 그런 다음 성능 회귀가 있는 명령문의 sql_hash의 모든 계획을 쿼리합니다. 쿼리에서 last_used 날짜가 성능 회귀 분석이 시작된 날짜보다 크거나 같은지 확인하세요. 쿼리는 성과 회귀를 담당할 수 있는 계획 또는 계획 집합을 식별합니다. apg_plan_mgmt.get_explain_planexplainOptionList를 사용하여 verbose, hashes로 설정할 수 있습니다. 또한 apg_plan_mgmt.evolve_plan_baselines를 통해 계획과 더 나은 성능을 발휘할 수 있는 대체 계획을 분석할 수 있습니다.

update_plans_last_used 함수는 DB 클러스터의 기본 DB 인스턴스에만 영향을 줍니다.

apg_plan_mgmt.validate_plans

최적화 프로그램에서 계획을 여전히 다시 생성할 수 있는지 검증합니다. 최적화 프로그램은 계획의 활성 또는 비활성 여부와 상관없이 Approved, UnapprovedPreferred 계획을 검증합니다. Rejected 계획은 검증되지 않습니다. 원할 경우 apg_plan_mgmt.validate_plans 함수를 사용하여 유효하지 않은 계획을 삭제하거나 비활성화할 수 있습니다.

구문

apg_plan_mgmt.validate_plans( sql_hash, plan_hash, action) apg_plan_mgmt.validate_plans( action)

반환 값

잘못된 계획 수.

Parameters

파라미터 설명
sql_hash 계획의 관리형 SQL 문의 sql_hash ID.
plan_hash 관리형 계획의 plan_hash ID. 동일한 sql_hash ID 값에 대한 모든 계획의 평균을 구하려면 NULL을 사용합니다.
action

함수에서 잘못된 계획에 대해 수행할 작업. 유효한 문자열 값에는 다음이 포함됩니다. 대/소문자를 구분하지 않습니다.

  • 'disable' – 각각의 잘못된 계획이 비활성화됩니다.

  • 'delete' – 각각의 잘못된 계획이 삭제됩니다.

  • 'update_plan_hash' 정확하게 재현할 수 없는 계획에 대한 plan_hash ID를 업데이트합니다. SQL을 다시 작성하여 계획을 수정할 수도 있습니다. 그런 다음 원본 SQL에 대해 좋은 계획을 Approved 계획으로 등록할 수 있습니다.

  • NULL – 함수가 잘못된 계획 수만 반환합니다. 다른 작업이 수행되지 않습니다.

  • '' – 빈 문자열을 지정하면 유효한 계획 수와 잘못된 계획 수를 둘 다 표시하는 메시지가 생성됩니다.

그 밖의 값은 빈 문자열로 간주됩니다.

사용 노트

전체 validate_plans(action) 보기의 모든 관리형 설명문에 대해 모든 관리형 계획을 검증하려면 apg_plan_mgmt.dba_plans 형태를 사용합니다.

validate_plans(sql_hash, plan_hash, action)가 지정된 관리형 설명문의 경우 plan_hash가 지정된 관리형 계획을 검증하려면 sql_hash 형태를 사용합니다.

validate_plans(sql_hash, NULL, action)가 지정된 관리형 설명문에 대해 모든 관리형 계획을 검증하려면 sql_hash 형태를 사용합니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.