구체화된 뷰 권장사항 관리

이 문서에서는 구체화된 뷰 추천자의 작동 방식을 설명하고 구체화된 뷰 권장사항을 보고 적용하는 방법도 보여줍니다.

소개

BigQuery 구체화된 뷰 추천자는 워크로드 성능을 개선하고 워크로드 실행 비용을 절약하는 데 도움이 됩니다. 이 권장사항은 지난 30일 동안의 이전 쿼리 실행 특성을 기반으로 합니다.

구체화된 뷰는 성능 및 효율성 향상을 위해 쿼리 결과를 주기적으로 캐시하는 미리 계산된 뷰입니다. 구체화된 뷰는 스마트 미세 조정을 통해 소스 테이블에 대해 쿼리를 투명하게 다시 작성하여 기존의 구체화된 뷰를 통해 성능과 효율성이 향상됩니다.

추천자 작동 방식

추천자는 BigQuery에서 쿼리 작업을 실행하는 각 프로젝트에 대해 권장사항을 매일 생성합니다. 권장사항은 지난 30일 동안의 워크로드 실행 분석을 기반으로 합니다. 구체화된 뷰 추천자는 반복적인 쿼리 패턴을 찾고 반복 서브 쿼리를 증분 구체화된 뷰로 이동할 수 있을 때 절약할 수 있는 비용을 계산합니다. 추천자는 쿼리 시 절감액과 구체화된 뷰의 계정 유지보수 비용을 고려합니다. 이러한 조합된 요소가 상당히 긍정적인 결과를 보이는 경우 추천자는 권장사항을 제공합니다.

다음 쿼리 예시를 살펴보세요.

WITH revenue   AS
(SELECT l_suppkey as supplier_no,
        sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey)
SELECT s_suppkey,
      s_name,
      s_address,
      s_phone,
      total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
  (SELECT max(total_revenue)
    FROM revenue)
ORDER BY s_suppkey

이 쿼리 예시는 상위 공급업체에 대한 정보를 보여줍니다. 쿼리에는 모든 공급업체당 총 수익(l_suppkey)을 나타내는 revenue라는 공통 테이블 표현식(CTE)이 포함되어 있습니다. revenue는 공급업체의 total_revenue가 모든 공급업체 간에 max(total_revenue)와 일치한다는 조건에 따라 공급업체 테이블과 조인됩니다. 따라서 이 쿼리는 최대 총수익을 가진 공급업체에 대한 정보(l_suppkey, s_name, s_address, s_phone, total_revenue)를 계산합니다.

전체 쿼리 자체가 너무 복잡해서 증분 구체화된 뷰에 넣을 수 없습니다. 하지만 supplier CTE는 단일 테이블에 대한 집계이며, 증분 구체화된 뷰에서 지원되는 쿼리 패턴입니다. supplier CTE는 쿼리에서 계산 비용이 가장 많이 드는 부분이기도 합니다. 따라서 예시 쿼리가 지속적으로 변경되는 소스 테이블에서 반복적으로 실행된 경우 구체화된 뷰 추천자는 supplier CTE를 구체화된 뷰에 배치하도록 제안할 수 있습니다. 앞의 샘플 쿼리에 대한 구체화된 뷰 권장사항은 다음과 비슷하게 표시됩니다.

CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
         sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey

Recommender API는 쿼리 실행 정보도 통계 형식으로 반환합니다. 통계는 프로젝트 워크로드를 이해하는 데 도움이 되는 발견 항목으로, 구체화된 뷰 권장사항으로 워크로드 비용을 개선하는 방법에 대한 자세한 컨텍스트를 제공합니다.

제한사항

시작하기 전에

구체화된 뷰 권장사항을 보거나 적용하려면 먼저 Recommender API를 사용 설정해야 합니다.

필수 권한

구체화된 뷰 권장사항에 액세스하는 데 필요한 권한을 얻으려면 관리자에게 BigQuery 구체화된 뷰 추천자 뷰어(roles/recommender.bigqueryMaterializedViewViewer) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 구체화된 뷰 권장사항에 액세스하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

구체화된 뷰 권장사항에 액세스하려면 다음 권한이 필요합니다.

  • recommender.bigqueryMaterializedViewRecommendations.get
  • recommender.bigqueryMaterializedViewRecommendations.list

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

BigQuery에서 IAM 역할 및 권한에 대한 자세한 내용은 IAM 소개를 참조하세요.

구체화된 뷰 권장사항 보기

이 섹션에서는 Google Cloud 콘솔, Google Cloud CLI, Recommender API를 사용하여 구체화된 뷰 권장사항 및 통계를 보는 방법을 설명합니다.

다음 옵션 중 하나를 선택합니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 권장사항을 클릭합니다.

    추천을 클릭하여 모든 추천을 확인합니다.

  3. BigQuery 권장사항 창이 열립니다. BigQuery 워크로드 비용 최적화에서 세부정보 보기를 클릭합니다.

    모든 BigQuery 권장사항을 보려면 세부정보를 확인하세요

  4. 현재 프로젝트에 생성된 모든 권장사항이 표시된 권장사항 목록이 나타납니다. 특정 구체화된 뷰 권장사항 또는 테이블 통계에 대한 자세한 내용을 보려면 세부정보를 클릭합니다.

또는 측면 탐색 메뉴에서 권장사항을 클릭하여 프로젝트 또는 조직에 사용할 수 있는 모든 권장사항을 볼 수 있습니다.

gcloud

특정 프로젝트의 구체화된 뷰 권장사항을 보려면 gcloud recommender recommendations list 명령어를 사용합니다.

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.materializedview.Recommender \
    --format=FORMAT_TYPE \

다음을 바꿉니다.

  • PROJECT_NAME: 쿼리 작업을 실행하는 프로젝트의 이름
  • REGION_NAME: 쿼리 작업이 실행되는 리전
  • FORMAT_TYPE: 지원되는 gcloud CLI 출력 형식(예: JSON)
다음 표에서는 'Recommendations' 응답의 중요한 필드를 설명합니다.

속성 하위유형 관련성 설명
recommenderSubtype CREATE_MATERIALIZED_VIEW 권장사항 유형
content.overview.sql CREATE_MATERIALIZED_VIEW 구체화된 뷰를 만드는 추천 DDL 문
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW 추천 뷰로 매월 절약되는 예상 슬롯(밀리초)
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW 추천 뷰로 매월 절약되는 예상 스캔 바이트
content.overview.baseTables CREATE_MATERIALIZED_VIEW 나중에 사용하기 위해 예약되어 있습니다.

gcloud CLI를 사용하여 구체화된 뷰 권장사항을 표시한 통계를 보려면 gcloud recommender insights list 명령어를 사용합니다.

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.materializedview.Insight \
    --format=FORMAT_TYPE \

다음을 바꿉니다.

  • PROJECT_NAME: 쿼리 작업을 실행하는 프로젝트의 이름
  • REGION_NAME: 쿼리 작업이 실행되는 리전
  • FORMAT_TYPE: 지원되는 gcloud CLI 출력 형식(예: JSON)
다음 표에서는 통계 API 응답의 중요한 필드를 설명합니다.

속성 하위유형 관련성 설명
content.queryCount CREATE_MATERIALIZED_VIEW 구체화된 뷰를 사용하여 최적화할 수 있는 반복되는 패턴이 있는 관찰 기간의 쿼리 수입니다.

REST API

특정 프로젝트에 대한 구체화된 뷰 권장사항을 보려면 REST API를 사용합니다. 각 명령어에 gcloud CLI를 사용하여 가져올 수 있는 인증 토큰을 제공해야 합니다. 인증 토큰을 가져오는 방법에 대한 자세한 내용은 ID 토큰을 가져오는 방법을 참조하세요.

curl list 요청을 사용하여 특정 프로젝트에 대한 모든 권장사항을 볼 수 있습니다.

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations

다음을 바꿉니다.

  • PROJECT_NAME: BigQuery 테이블이 포함된 프로젝트의 이름
  • LOCATION: 프로젝트가 있는 위치
다음 표에서는 'Recommendations' 응답의 중요한 필드를 설명합니다.

속성 하위유형 관련성 설명
recommenderSubtype CREATE_MATERIALIZED_VIEW 권장사항 유형
content.overview.sql CREATE_MATERIALIZED_VIEW 구체화된 뷰를 만드는 추천 DDL 문
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW 추천 뷰로 매월 절약되는 예상 슬롯(밀리초)
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW 추천 뷰로 매월 절약되는 예상 스캔 바이트
content.overview.baseTables CREATE_MATERIALIZED_VIEW 나중에 사용하기 위해 예약되어 있습니다.

REST API를 사용하여 구체화된 뷰 권장사항을 표시한 통계를 보려면 다음 명령어를 실행합니다.

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights

다음을 바꿉니다.

  • PROJECT_NAME: BigQuery 테이블이 포함된 프로젝트의 이름
  • LOCATION: 프로젝트가 있는 위치
다음 표에서는 통계 API 응답의 중요한 필드를 설명합니다.

속성 하위유형 관련성 설명
content.queryCount CREATE_MATERIALIZED_VIEW 구체화된 뷰를 사용하여 최적화할 수 있는 반복되는 패턴이 있는 관찰 기간의 쿼리 수입니다.

INFORMATION_SCHEMA로 추천 보기

INFORMATION_SCHEMA 뷰를 사용하여 권장사항 및 통계를 볼 수도 있습니다. 예를 들어 INFORMATION_SCHEMA.RECOMMENDATIONS 뷰를 사용하면 다음 예시와 같이 슬롯 절감액을 기준으로 상위 3개 추천을 확인할 수 있습니다.

+---------------------------------------------------+--------------------------------------------------------------------------------------------------+
|                    recommender                    |   target_resources      | est_gb_saved_monthly | slot_hours_saved_monthly |  last_updated_time
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+
| google.bigquery.materializedview.Recommender      | ["project_resource"]    | 140805.38289248943   |        9613.139166666666 |  2024-07-01 13:00:00
| google.bigquery.table.PartitionClusterRecommender | ["table_resource_1"]    | 4393.7416711859405   |        56.61476777777777 |  2024-07-01 13:00:00
| google.bigquery.table.PartitionClusterRecommender | ["table_resource_2"]    |   3934.07264107652   |       10.499466666666667 |  2024-07-01 13:00:00
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+

자세한 내용은 다음 리소스를 참조하세요.

구체화된 뷰 추천 적용

Google Cloud 콘솔에서 추천 CREATE MATERIALIZED VIEW 유형 DDL 문을 실행하여 구체화된 뷰를 만드는 권장사항을 적용할 수 있습니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 권장사항을 클릭합니다.

    추천을 클릭하여 모든 추천을 확인합니다.

  3. BigQuery 권장사항 창이 열립니다. BigQuery 워크로드 비용 최적화에서 세부정보 보기를 클릭합니다.

    모든 BigQuery 권장사항을 보려면 세부정보를 확인하세요

  4. 선택한 범위에 따라 현재 프로젝트 또는 조직에 대해 생성된 모든 권장사항이 표시된 권장사항 목록이 나타납니다. 구체화된 뷰 권장사항을 찾고 세부정보를 클릭합니다.

  5. BigQuery Studio에서 보기를 클릭합니다. CREATE MATERIALIZED VIEW DDL 문이 포함된 SQL 편집기가 열립니다.

  6. 제공된 CREATE MATERIALIZED VIEW 문에서 고유한 구체화된 뷰 이름으로 MATERIALIZED_VIEW 자리표시자를 수정합니다.

  7. CREATE MATERIALIZED VIEW DDL 문을 실행하여 권장되는 구체화된 뷰를 만듭니다.

권장사항 문제 해결

문제: 특정 테이블에 대한 추천이 표시되지 않습니다.

다음과 같은 경우 구체화된 뷰 권장사항이 표시되지 않을 수 있습니다.

  • 프로젝트에서 실행되는 쿼리 작업 간에 반복되는 쿼리 패턴이 없습니다.
  • 반복 쿼리 패턴은 증분 구체화된 뷰의 제한사항을 충족하지 않으며 스마트 조정에 적합한 구체화된 뷰에 넣을 수 없습니다.
  • 잠재적인 구체화된 뷰는 유지보수 비용이 높을 수 있습니다. 예를 들어 소스 테이블은 DML(Data Manipulation Language) 작업에 의해 수정되는 경우가 많으므로 구체화된 뷰가 전체 새로고침되어 추가 비용이 발생합니다.
  • 공통적인 반복 패턴을 가진 쿼리 수가 부족합니다.
  • 월별 예상 절감액이 너무 적습니다(슬롯 1개 미만).
  • 프로젝트에서 실행된 쿼리 작업은 이미 구체화된 뷰를 사용합니다.

가격 책정

권장사항을 확인할 때 워크로드 성능에 미치는 비용 또는 부정적인 영향은 없습니다.

구체화된 뷰를 만들어 권장사항을 적용하면 스토리지, 유지보수, 쿼리 비용이 발생할 수 있습니다. 자세한 내용은 구체화된 뷰 가격 책정을 참조하세요.