색인 자문 사용

이 페이지에서는 PostgreSQL용 Cloud SQL 색인 자문에 대해 살펴보고 색인 권장사항을 보고 적용하는 방법을 설명합니다.

PostgreSQL용 Cloud SQL은 데이터베이스가 처리하는 쿼리를 추적하는 색인 자문을 제공합니다. 주기적으로 이러한 쿼리를 분석해서 쿼리 성능을 늘릴 수 있는 새로운 색인을 추천합니다.

색인 자문 권장사항을 보고 테이블로 쿼리하거나 언제든지 주문형 분석 및 보고를 요청할 수 있습니다.

색인 자문 권장사항 사용 설정

색인 자문 추천을 사용 설정하려면 데이터베이스에서 Gemini를 설정합니다.

색인 자문 권장사항 사용 중지

색인 자문 권장사항을 사용 중지하려면 PostgreSQL용 Cloud SQL 인스턴스에서 cloudsql.enable_index_advisor 플래그를 삭제합니다. 인스턴스에 대한 플래그를 삭제하는 방법은 데이터베이스 플래그 구성을 참조하세요.

색인 자문 권장사항 보기

PostgreSQL용 Cloud SQL은 색인 자문 분석을 주기적으로 자동으로 실행합니다.

각 데이터베이스에 있는 다음 테이블 뷰를 통해 결과를 읽을 수 있습니다.

  • google_db_advisor_recommended_indexes: 각 데이터베이스에 대해 권장되는 새로운 색인을 나열합니다. 또한 각 색인에 필요한 스토리지 예상 값과 각 색인이 영향을 줄 수 있는 쿼리 수가 포함됩니다.

  • google_db_advisor_workload_report: 자문이 하나 이상의 새 색인을 권장하는 각 쿼리를 나열합니다. 각 행에는 관련 쿼리의 권장사항이 요약되어 표시됩니다.

예를 들어 테이블 형식으로 최신 색인 권장 분석의 결과를 보려면 다음 쿼리를 실행합니다.

SELECT * FROM google_db_advisor_recommended_indexes;

색인 자문의 최신 분석으로 권장사항이 발견되지 않으면 쿼리가 행이 없는 테이블을 반환합니다.

이러한 보고서가 모두 일반적인 데이터베이스 뷰로 존재하기 때문에 이 정보를 필터링 또는 제공하는 쿼리를 작성할 수 있습니다. 예를 들어 권장 색인을 완전 연관된 쿼리와 쌍으로 연결하는 보고서를 보려면 해당 query_id 열에서 google_db_advisor_workload_reportgoogle_db_advisor_workload_statements 뷰를 조인합니다.

SELECT DISTINCT recommended_indexes, query
FROM google_db_advisor_workload_report r, google_db_advisor_workload_statements s
WHERE r.query_id = s.query_id;

수동으로 색인 분석 요청

색인 자문의 다음 예정된 분석을 기다리지 않고 PostgreSQL용 Cloud SQL이 분석을 즉시 실행하고 보고서를 표시하도록 요청할 수 있습니다. PostgreSQL용 Cloud SQL의 경우 색인 자문이 수동 분석을 실행하도록 설정한 후 최소 15분 이상 기다려야 합니다. 이렇게 하려면 다음 SQL 함수를 실행합니다.

SELECT * FROM google_db_advisor_recommend_indexes();

분석이 완료되면 PostgreSQL용 Cloud SQL이 권장되는 색인에 대한 설명 및 예상 스토리지 요구사항이 포함된 테이블 형식의 보고서를 표시합니다. 분석으로 권장할 새 색인이 발견되지 않으면 뷰에 행이 포함되지 않습니다.

이 명령어를 실행하는 사용자 역할은 표시되는 권장사항에 영향을 줄 수 있습니다. PostgreSQL용 Cloud SQL은 현재 데이터베이스 사용자가 수행한 쿼리와 관련된 색인 권장사항만 표시합니다.

색인 자문 권장사항 적용

google_db_advisor_recommended_indexes 뷰의 index 열에는 각 행에서 권장되는 색인을 생성하기 위한 완전한 PostgreSQL CREATE INDEX DDL 문이 포함됩니다.

해당 행의 권장사항을 적용하려면 표시된 대로 정확하게 해당 DDL 문을 실행합니다. 여기에는 클립보드에 복사하고 psql 프롬프트에 붙여넣는 과정이 포함됩니다.

예를 들어 이전 섹션에 설명된 쿼리를 사용해서 수동으로 분석을 실행하여 다음 결과가 발생했다고 가정해 보세요.

                    index                   | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
 CREATE INDEX ON "School"."Students"("age") |                            3
(1 row)

이 보고서에는 School 스키마의 Students 테이블에서 age 열에 단일 열 색인을 추가하는 단일 권장사항이 포함되어 있습니다. 이 조언을 적용하려면 보고서 내에 표시된 대로 DDL 쿼리를 입력합니다.

CREATE INDEX ON "School"."Students"("age");

색인 자문의 추적 쿼리 보기

google_db_advisor_workload_statements 뷰에는 색인 자문이 추적한 모든 쿼리 목록과 다음 측정항목과 같은 각 항목의 중요 메타데이터가 포함됩니다.

  • 인스턴스가 각 쿼리를 실행한 횟수
  • 인스턴스가 이러한 쿼리를 처리하는 데 걸린 총 시간
  • 이러한 쿼리를 실행하는 데이터베이스 사용자의 ID

색인 자문의 추적 쿼리 지우기

추적 쿼리를 지워서 인스턴스에서 색인 자문의 동작을 재설정할 수 있습니다. 이렇게 하려면 다음 SQL 함수를 실행합니다.

SELECT google_db_advisor_reset();

PostgreSQL용 Cloud SQL은 색인 자문의 추적된 쿼리 모음을 즉시 비웁니다.