

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 쿼리 계획 관리
<a name="query-plan-management"></a>

통계, 제한 사항, 환경 설정, 쿼리 파라미터 바인딩, PostgreSQL 데이터베이스 엔진으로의 업그레이드에 대한 변경 사항을 들 경우 쿼리 계획 회귀가 발생할 수 있습니다. *쿼리 계획 회귀는* 최적화 프로그램이 데이터베이스 환경을 변경하기 전보다 덜 최적의 계획을 선택하는 경우를 제어할 수 있습니다.

Amazon Aurora PostgreSQL 호환 에디션의 [QPM (쿼리 계획 관리)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html) 기능은 쿼리 계획 회귀를 일으킬 수 있는 데이터베이스 환경 변경에 관계없이 계획의 적응성과 안정성을 보장하도록 설계되었습니다. QPM은 옵티마이저를 어느 정도 제어할 수 있습니다. QPM을 사용하면 SQL 쿼전용 최적화 프로그램에서 생성한 쿼리 실행 계획을 관리할 수 있습니다. 쿼리 실행 계획은 최적화 프로그램이 중요한 쿼리에 대해 승인된 계획 중에서 성능을 최적화하도록 강제합니다.

기업에서는 일반적으로 애플리케이션 및 데이터베이스를 전 세계에 배포하거나 각 애플리케이션 데이터베이스에 대해 개발, QA, 스테이징, 사전 프로덕션, 테스트 및 프로덕션과 같은 여러 환경을 유지 관리합니다. 각 데이터베이스, 각 환경 및 전체 환경에 대한 쿼리 실행 계획을 유지 관리하는 것은 복잡하고 시간이 많이 걸릴AWS 리전 수 있습니다. QPM은 한 데이터베이스에서 다른 데이터베이스로 Amazon Aurora PostgreSQL 호환 관리형 플랜을 내보내고 가져올 수 있습니다. 이를 통해 쿼리 실행 계획을 중앙에서 관리하고 데이터베이스를 전 세계에 배포할 수 있습니다. 이 기능을 사용하여 사전 프로덕션 데이터베이스의 계획 세트를 조사하고 계획이 제대로 수행되는지 확인한 다음 프로덕션 환경으로 로드할 수 있습니다.

QPM은 여러 가지 다른 이점도 제공합니다. 예를 들어 응용 프로그램에서 변경할 수 없거나 명령문에 힌트를 추가할 수 없는 경우 QPM을 사용하여 실행 계획을 개선할 수 있습니다. 또한 QPM은 옵티마이저가 발견한 새로운 최소 비용 플랜을 자동으로 감지하므로 성능뿐 아니라 비용도 계속 최적화할 수 있습니다.

QPM을 활성화하는 것이 좋습니다. QPM이 활성화되면 최적화 프로그램은 사용자가 승인한 최소 비용 플랜을 사용합니다. 이를 통해 회귀를 방지하고 최적이 아닌 계획을 관리하고 수정하는 데 필요한 시간을 줄일 수 있습니다.

QPM 기능을 사용하는 방법에는 사전 예방적 접근 방식과 사후 대응형의 두 가지 접근 방식이 있습니다. 사전 예방적 접근 방식은 성능 저하가 발생하지 않도록 설계되었으며, 사후 대응 접근 방식은 성능 저하가 발생한 후 이를 감지하고 복구하도록 설계되었습니다. 쿼리별로 접근 방식을 선택할 수 있습니다. 회귀가 발생하기 쉬운 복잡한 쿼리나 비즈니스에 중요한 쿼리의 경우 사전 예방적 접근 방식을 사용하여 해당 쿼리에 대한 최적의 계획을 승인할 수 있습니다. 다른 쿼리에서 런타임 중에 쿼리 플랜 회귀가 발생하는 경우 반응형 접근 방식을 사용할 수 있습니다. 회귀를 감지하면 최적화 프로그램이 승인된 다른 계획을`rejected` 선택하도록 해당 계획의 상태를 변경하십시오. 자세한 내용은 [Aurora PostgreSQL 쿼리 계획 관리 모범 사례](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.BestPractice.html) (Aurora 설명서) 를 참조하십시오.

## 쿼리 계획 관리는 어떻게 작동하나요?
<a name="qpm-operation"></a>

플랜에는`approved`,`unapproved``preferred`, 또는 상태 중 하나가`rejected` 지정됩니다. 최적화 프로그램은 각 관리 명령문에 대해 처음 생성된 계획을 으로`approved` 설정한 다음 추가 계획의 상태를 로 설정합니다`unapproved`. 나중에`unapproved` 계획을 평가하고 상태를`approved``preferred`, 또는 로 변경할 수`rejected` 있습니다. 자세한 내용은 [Aurora PostgreSQL 쿼리 계획 관리에 대한 이해](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Start.html) (Aurora 설명서) 를 참조하십시오.

관리형 계획을 관리할 수 있습니다. 가장 일반적인 방법은 두 번 이상 실행되는 모든 명령문에 대한 계획을 자동으로 캡처하는 것입니다. 하지만 특정 명령문 세트에 대한 계획을 수동으로 캡처할 수도 있습니다. 자세한 내용은 [Aurora PostgreSQL 실행 계획 캡처](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.CapturePlans.html) (Aurora 설명서) 를 참조하십시오.

관리형 계획을 설정하면 최적화 프로그램이 각각의 관리형 문에 대해 유효하고 활성화된 최소 비용`preferred` 또는`approved` 계획을 사용합니다. 자세한 내용은 [최적화 프로그램에서 실행할 계획을 선택하는 방식](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.UsePlans.html#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans) (Aurora 문서).

Amazon Aurora PostgreSQL과 호환되는 QPM 기능을 구성하는 방법에 대한 지침은 [Aurora PostgreSQL에 대한 쿼리 실행 계획 관리](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html) (Aurora 설명서) 를 참조하십시오.

## 제한 사항
<a name="qpm-limitations"></a>

QPM을 사용하려면 지원되는 SQL 문에 대한 요구 사항을 충족하고 명령문이 시스템 관계를 참조하지 않으며 DB 인스턴스 클래스에 충분한 vCPU가 있는지 확인해야 합니다. 자세한 내용은 [지원되는 SQL 문](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html#AuroraPostgreSQL.Optimize.overview.features) 및 [쿼리 계획 관리 제한 사항](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html#AuroraPostgreSQL.Optimize.overview.limitations) (Aurora 설명서) 을 참조하십시오.

## 쿼리 계획 관리에 대한 사용 사례
<a name="qpm-use-cases"></a>
+ **쿼리 계획 회귀 방지** — 데이터베이스 버전을 최신 상태로 유지하면 성능 및 보안 향상, 새 기능 이용, 알려진 문제 수정, 규제 요구 사항 준수 등 많은 이점을 얻을 수 있습니다. 그러나 데이터베이스 업데이트로 인해 일부 쿼리에서 성능 저하가 발생할 위험이 있습니다. 메이저 버전 업그레이드에서는 기존 애플리케이션 쿼리와 이전 버전과 호환되지 않을 수 있는 변경 사항이 포함될 수 있으므로 이러한 위험이 더 커집니다. QPM을 구현하면 시스템 변경 중에 회귀를 방지하고 성능을 안정화하는 데 도움이 될 수 있습니다. 통계를 새로 고치거나, 인덱스를 추가하거나, 매개 변수를 변경하거나, Amazon Aurora PostgreSQL과 호환되는 새 버전으로 업그레이드하는 경우 QPM은 새 계획을 감지하지만 승인된 계획을 계속 사용하므로 계획 안정성이 유지됩니다.
+ **테스트 기능** — 모든 관리형 SQL 문에 대한 계획 기록을 보고 새로운 PostgreSQL 기능 또는 계획 변경이 성능을 향상시키는지 평가할 수 있습니다. 그런 다음 해당 기능을 구현할지 아니면 새 계획을 구현할지 결정할 수 있습니다. 자세한 내용은 [dba\_plans 보기에서 Aurora PostgreSQL 쿼리 계획 검사](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.ViewPlans.html) (Aurora 설명서) 를 참조하십시오.
+ **계획 개선** — 경우에 따라 좋지 않은 계획을 거부, 비활성화 또는 삭제하기 보다는 수정하는 것이 더 나을 수도 있습니다. 자세한 내용은 [pg\_hint\_plan을 사용한 계획 수정](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Maintenance.html#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan) (Aurora 설명서) 을 참조하십시오.