복제본에서 Aurora PostgreSQL 실행 계획 캡처 - Amazon Aurora

복제본에서 Aurora PostgreSQL 실행 계획 캡처

쿼리 계획 관리(QPM)를 사용하면 Aurora 복제본에서 생성된 쿼리 계획을 캡처하여 Aurora DB 클러스터의 기본 DB 인스턴스에 저장할 수 있습니다. 모든 Aurora 복제본에서 쿼리 계획을 수집하고 기본 인스턴스의 중앙 영구 테이블에서 최적의 계획 집합을 유지 관리할 수 있습니다. 그런 다음 필요할 때 이 계획을 다른 복제본에 적용할 수 있습니다. 이를 통해 실행 계획의 안정성을 유지하고 DB 클러스터 및 엔진 버전 전반의 쿼리 성능을 개선할 수 있습니다.

사전 조건

Aurora 복제본에서 capture_plan_baselines parameter 켜기 - Aurora 복제본에서 계획을 캡처하려면 capture_plan_baselines 파라미터를 자동 또는 수동으로 설정합니다. 자세한 내용은 apg_plan_mgmt.capture_plan_baselines 단원을 참조하십시오.

postgres_fdw 확장 설치 - Aurora 복제본에서 계획을 캡처하려면 postgres_fdw 외부 데이터 래퍼 확장을 설치해야 합니다. 각 데이터베이스에서 다음 명령을 실행하여 확장을 설치합니다.

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Aurora 복제본의 계획 캡처 관리

Aurora 복제본의 계획 캡처 켜기

Aurora 복제본에서 계획 캡처를 생성하거나 제거하려면 rds_superuser 권한이 있어야 합니다. 사용자 역할 및 권한에 대한 자세한 내용은 PostgreSQL 역할 및 권한 이해를 참조하세요.

계획을 캡처하려면 다음과 같이 라이터 DB 인스턴스에서 apg_plan_mgmt.create_replica_plan_capture 함수를 호출하세요.

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint - cluster_endpoint(라이터 엔드포인트)는 Aurora 복제본의 계획 캡처에 대한 장애 조치 지원을 제공합니다.

  • 암호 - 보안을 강화하려면 암호를 생성할 때 아래 지침을 따르는 것이 좋습니다.

    • 최소 8개의 문자를 포함해야 합니다.

    • 최소한 대문자 1개, 소문자 1개 및 숫자 1개를 포함해야 합니다.

    • 하나 이상의 특수 문자(?, !, #, <, >, * 등)가 있어야 합니다.

참고

클러스터 엔드포인트, 암호 또는 포트 번호를 변경하는 경우 클러스터 엔드포인트 및 암호를 사용하여 apg_plan_mgmt.create_replica_plan_capture()를 다시 실행하여 계획 캡처를 다시 초기화해야 합니다. 이렇게 하지 않으면 Aurora 복제본에서 계획을 캡처하는 데 실패합니다.

Aurora 복제본의 계획 캡처 끄기

파라미터 그룹에서 값을 off로 설정하여 Aurora 복제본의 capture_plan_baselines 파라미터를 끌 수 있습니다.

Aurora 복제본의 계획 캡처 제거

Aurora 복제본에서 계획 캡처를 완전히 제거할 수 있지만 먼저 확인할 것이 있습니다. 계획 캡처를 제거하려면 다음과 같이 apg_plan_mgmt.remove_replica_plan_capture를 호출합니다.

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

Aurora 복제본에서 계획 캡처를 활성화하려면 클러스터 엔드포인트와 암호를 사용하여 apg_plan_mgmt.create_replica_plan_capture()를 다시 호출해야 합니다.

문제 해결

Aurora 복제본에서 계획이 예상대로 캡처되지 않는 경우 아래에서 문제 해결 아이디어와 해결 방법을 찾을 수 있습니다.

  • 파라미터 설정 - capture_plan_baselines 파라미터가 계획 캡처를 켜도록 적절한 값으로 설정되어 있는지 확인합니다.

  • postgres_fdw 확장 설치 - 다음 쿼리를 사용하여 postgres_fdw 설치 여부를 확인합니다.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • create_replica_plan_capture()가 호출됨 - 다음 명령을 사용하여 사용자 매핑이 종료되는지 확인합니다. 그렇지 않으면 create_replica_plan_capture()를 호출하여 기능을 초기화합니다.

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • 클러스터 엔드포인트 및 포트 번호 - 해당하는 경우 클러스터 엔드포인트 및 포트 번호를 확인합니다. 값이 올바르지 않으면 오류 메시지가 표시되지 않습니다.

    다음 명령을 사용하여 create()에 엔드포인트가 사용되었는지 확인하고 엔드포인트가 있는 데이터베이스를 확인합니다.

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload() - 삭제 함수를 유효하게 하려면 Aurora 복제본에서 apg_plan_mgmt.delete_plan()을 호출한 후 apg_plan_mgmt.reload()를 호출해야 합니다. 이렇게 하면 변경 사항을 성공적으로 구현할 수 있습니다.

  • 암호 - 앞서 언급한 지침에 따라 create_replica_plan_capture()에 암호를 입력해야 합니다. 이렇게 하지 않으면 오류 메시지가 수신됩니다. 자세한 내용은 Aurora 복제본의 계획 캡처 관리 섹션을 참조하세요. 요구 사항에 맞는 다른 암호를 사용하세요.

  • 리전 간 연결 - Aurora 복제본의 계획 캡처는 Aurora 글로벌 데이터베이스에서도 지원됩니다. Aurora 글로벌 데이터베이스에서는 라이터 인스턴스와 Aurora 복제본이 서로 다른 리전에 있을 수 있습니다. 라이터 인스턴스와 리전 간 복제본은 VPC 피어링을 사용하여 통신할 수 있어야 합니다. 자세한 내용은 VPC 피어링을 참조하세요. 리전 간 장애 조치가 발생하는 경우 엔드포인트를 새 기본 DB 클러스터 엔드포인트로 재구성해야 합니다.