View a markdown version of this page

쿼리 계획 관리 - AWS규범적 지침

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

쿼리 계획 관리

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

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

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

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

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

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

쿼리 계획 관리는 어떻게 작동하나요?

플랜에는approved,unapprovedpreferred, 또는 상태 중 하나가rejected 지정됩니다. 최적화 프로그램은 각 관리 명령문에 대해 처음 생성된 계획을 으로approved 설정한 다음 추가 계획의 상태를 로 설정합니다unapproved. 나중에unapproved 계획을 평가하고 상태를approvedpreferred, 또는 로 변경할 수rejected 있습니다. 자세한 내용은 Aurora PostgreSQL 쿼리 계획 관리에 대한 이해 (Aurora 설명서) 를 참조하십시오.

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

관리형 계획을 설정하면 최적화 프로그램이 각각의 관리형 문에 대해 유효하고 활성화된 최소 비용preferred 또는approved 계획을 사용합니다. 자세한 내용은 최적화 프로그램에서 실행할 계획을 선택하는 방식 (Aurora 문서).

Amazon Aurora PostgreSQL과 호환되는 QPM 기능을 구성하는 방법에 대한 지침은 Aurora PostgreSQL에 대한 쿼리 실행 계획 관리 (Aurora 설명서) 를 참조하십시오.

제한 사항

QPM을 사용하려면 지원되는 SQL 문에 대한 요구 사항을 충족하고 명령문이 시스템 관계를 참조하지 않으며 DB 인스턴스 클래스에 충분한 vCPU가 있는지 확인해야 합니다. 자세한 내용은 지원되는 SQL 문쿼리 계획 관리 제한 사항 (Aurora 설명서) 을 참조하십시오.

쿼리 계획 관리에 대한 사용 사례

  • 쿼리 계획 회귀 방지 — 데이터베이스 버전을 최신 상태로 유지하면 성능 및 보안 향상, 새 기능 이용, 알려진 문제 수정, 규제 요구 사항 준수 등 많은 이점을 얻을 수 있습니다. 그러나 데이터베이스 업데이트로 인해 일부 쿼리에서 성능 저하가 발생할 위험이 있습니다. 메이저 버전 업그레이드에서는 기존 애플리케이션 쿼리와 이전 버전과 호환되지 않을 수 있는 변경 사항이 포함될 수 있으므로 이러한 위험이 더 커집니다. QPM을 구현하면 시스템 변경 중에 회귀를 방지하고 성능을 안정화하는 데 도움이 될 수 있습니다. 통계를 새로 고치거나, 인덱스를 추가하거나, 매개 변수를 변경하거나, Amazon Aurora PostgreSQL과 호환되는 새 버전으로 업그레이드하는 경우 QPM은 새 계획을 감지하지만 승인된 계획을 계속 사용하므로 계획 안정성이 유지됩니다.

  • 테스트 기능 — 모든 관리형 SQL 문에 대한 계획 기록을 보고 새로운 PostgreSQL 기능 또는 계획 변경이 성능을 향상시키는지 평가할 수 있습니다. 그런 다음 해당 기능을 구현할지 아니면 새 계획을 구현할지 결정할 수 있습니다. 자세한 내용은 dba_plans 보기에서 Aurora PostgreSQL 쿼리 계획 검사 (Aurora 설명서) 를 참조하십시오.

  • 계획 개선 — 경우에 따라 좋지 않은 계획을 거부, 비활성화 또는 삭제하기 보다는 수정하는 것이 더 나을 수도 있습니다. 자세한 내용은 pg_hint_plan을 사용한 계획 수정 (Aurora 설명서) 을 참조하십시오.