Aurora PostgreSQL 쿼리 계획 관리 이해하기 - Amazon Aurora

Aurora PostgreSQL 쿼리 계획 관리 이해하기

Aurora PostgreSQL DB 클러스터에 쿼리 계획 관리를 활성화하면 최적화 프로그램이 두 번 이상 처리하는 모든 SQL 문에 대한 쿼리 실행 계획을 생성하고 저장합니다. 최적화 프로그램은 관리형 문에 대해 생성된 첫 번째 계획의 상태를 항상 Approved로 설정하고 dba_plans 보기에 저장합니다.

관리형 문에 대해 저장된 승인된 계획의 세트를 계획 기준이라고 합니다. 애플리케이션이 실행될 때 최적화 프로그램은 관리형 문에 대한 추가 계획을 생성할 수 있습니다. 최적화 프로그램은 캡처한 추가 계획을 Unapproved 상태로 설정합니다.

이후에 Unapproved 계획이 잘 작동하는지 판단하고 이 계획을 Approved, Rejected 또는 Preferred로 변경할 수 있습니다. 그러기 위해서는 apg_plan_mgmt.evolve_plan_baselines 함수 또는 apg_plan_mgmt.set_plan_status 함수를 사용합니다.

최적화 프로그램이 SQL 문에 대한 계획을 생성할 때 쿼리 계획 관리는 이 계획을 apg_plan_mgmt.plans 테이블에 저장합니다. apg_plan_mgmt 역할이 부여된 데이터베이스 사용자는 apg_plan_mgmt.dba_plans 보기를 쿼리하여 계획 세부 정보를 볼 수 있습니다. 예를 들어, 다음 쿼리는 비프로덕션 Aurora PostgreSQL DB 클러스터의 현재 보기에 있는 계획의 세부 정보를 나열합니다.

  • sql_hash - SQL 문의 식별자로, SQL 문이 정규화된 텍스트의 해시 값입니다.

  • plan_hash - 계획의 고유 식별자로, sql_hash와 계획의 해시를 조합한 값입니다.

  • status – 계획의 상태입니다. 최적화 프로그램은 승인된 계획을 실행할 수 있습니다.

  • enabled - 계획이 사용할 준비가 되었는지(true) 아니면 사용할 준비가 되지 않았는지(false)를 나타냅니다.

  • plan_outline - 실제 실행 계획을 다시 생성하는 데 사용되는 계획을 표현합니다. 트리 구조의 연산자는 EXPLAIN 출력의 연산자에 매핑됩니다.

apg_plan_mgmt.dba_plans 보기에는 계획의 모든 세부 정보(예: 계획이 마지막으로 사용된 날짜)가 포함된 더 많은 열이 있습니다. 자세한 내용은 apg_plan_mgmt.dba_plans 보기에 대한 참조 섹션을 참조하세요.

정규화 및 SQL 해시

apg_plan_mgmt.dba_plans 보기에서 SQL 해시 값을 사용하여 관리형 문을 식별할 수 있습니다. SQL 해시는 차이(예: 리터럴 값)를 없앤 SQL 문의 정규화된 표현에서 계산됩니다.

각 SQL 문의 정규화 프로세스는 공백과 대/소문자를 보존하므로 SQL 문의 요점을 읽고 이해할 수 있습니다. 정규화는 다음 항목을 제거하거나 대체합니다.

  • 주요 블록 설명

  • EXPLAIN 키워드와 EXPLAIN 옵션 및 EXPLAIN ANALYZE

  • 후행 공백

  • 모든 리터럴

다음 문을 예로 들 수 있습니다.

/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;

최적화 프로그램은 이 문을 다음과 같이 정규화합니다.

SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;

정규화는 리터럴 또는 파라미터 값만 다를 수 있는 유사 SQL 문에 대해 동일한 SQL 해시를 사용할 수 있게 합니다. 즉, 동일한 SQL 해시에 대해 서로 다른 조건에서 최적 상태인 서로 다른 계획이 여러 개 있을 수 있습니다.

참고

서로 다른 스키마와 함께 사용되는 단일 SQL 문은 런타임에 특정 스키마에 바인딩되므로 다른 계획을 사용합니다. 플래너는 스키마 바인딩에 대한 통계를 사용하여 최적의 계획을 선택합니다.

최적화 프로그램이 계획을 선택하는 방법에 대한 자세한 내용은 Aurora PostgreSQL 관리형 계획 사용 섹션을 참조하세요. 이 섹션에서는 계획을 실제로 사용하기 전에 EXPLAINEXPLAIN ANALYZE를 사용하여 계획을 미리 보는 방법을 배울 수 있습니다. 자세한 내용은 최적화 프로그램이 선택한 계획 분석 단원을 참조하십시오. 계획 선택 프로세스를 설명하는 이미지는 최적화 프로그램에서 실행할 계획을 선택하는 방식. 섹션을 참조하세요.