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

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

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

apg_plan_mgmt.delete_plan

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

구문

apg_plan_mgmt.delete_plan( sql_hash, plan_hash )

반환 값

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

파라미터

파라미터 설명
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 )

반환 값

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

파라미터

파라미터 설명
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 함수를 무의미하게 다시 실행하는 일을 방지할 수 있습니다. 이를 위해서는 최근에 생성한 미승인 계획까지만 계획을 제한하십시오. 또는 최근 last_verified 타임스탬프가 있는 승인된 계획에서만 apg_plan_mgmt.evolve_plan_baselines 함수를 실행하지 않도록 할 수 있습니다.

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

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

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

apg_plan_mgmt.plan_last_used

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

구문

apg_plan_mgmt.plan_last_used( sql_hash, plan_hash )

반환 값

last_used 날짜를 반환합니다.

파라미터

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

apg_plan_mgmt.reload

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

구문

apg_plan_mgmt.reload()

반환 값

없음.

파라미터

없음.

사용 시 주의사항

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

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

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

apg_plan_mgmt.set_plan_enabled

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

구문

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

반환 값

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

파라미터

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

부울 값(true 또는 false):

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

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

apg_plan_mgmt.set_plan_status

관리형 계획의 상태를 승인됨, 승인되지 않음, 거부됨 또는 기본으로 설정합니다.

구문

apg_plan_mgmt.set_plan_status( sql_hash, plan_hash, status )

반환 값

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

파라미터

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

값이 다음 중 하나인 문자열. 대소문자를 구분하지 않습니다.

  • approved

  • unapproved

  • rejected

  • preferred

이러한 값에 대한 자세한 내용은 apg_plan_mgmt.dba_plans 보기에 대한 참조status를 참조하십시오.

apg_plan_mgmt.validate_plans

최적화 프로그램에서 계획을 여전히 다시 생성할 수 있는지 검증합니다. 최적화 프로그램에서 계획의 활성화/비활성화 여부, 승인, 미승인 및 기본 계획인지 여부를 검증합니다. 거부된 계획은 검증되지 않습니다. 원할 경우 apg_plan_mgmt.validate_plans 함수를 사용하여 유효하지 않은 계획을 삭제하거나 비활성화할 수 있습니다.

구문

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

반환 값

잘못된 계획 수.

파라미터

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

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

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

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

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

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

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

사용 시 주의사항

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

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

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