Gerenciar recomendações de visualização materializada

Este documento descreve como o recomendador de visualização materializada funciona e também mostra como visualizar e aplicar recomendações de visualização materializada.

Introdução

O recomendador de visualização materializada do BigQuery ajuda a melhorar o desempenho da carga de trabalho e reduzir o custo de execução. Essas recomendações são baseadas nas características históricas de execução de consultas dos últimos 30 dias.

As visualizações materializadas são pré-calculadas e armazenam os resultados de uma consulta em cache periodicamente para aumentar o desempenho e a eficiência. As visualizações materializadas usam ajustes inteligentes para reescrever consultas de forma transparente em tabelas de origem e usar visualizações materializadas existentes para melhor desempenho e eficiência.

Como o recomendador funciona

O recomendador gera recomendações diariamente para cada projeto que executa jobs de consulta no BigQuery. As recomendações são baseadas na análise da execução da carga de trabalho nos últimos 30 dias. O recomendador de visualização materializada procura padrões de consulta repetitivas e calcula qualquer economia que poderia ser feita se a subconsulta repetitiva pudesse ser movida para uma visualização materializada incremental. O recomendador considera qualquer economia de tempo de consulta e custo de manutenção de conta para a visualização materializada. Se esses fatores combinados mostrarem um resultado positivo significativo, o recomendador fará uma recomendação.

Considere o exemplo de consulta a seguir:

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

Este exemplo de consulta mostra informações sobre o fornecedor principal. A consulta contém uma expressão de tabela comum (CTE, na sigla em inglês) chamada revenue, que representa a receita total por fornecedor (l_suppkey). revenue é mesclado com a tabela do fornecedor na condição de que o total_revenue do fornecedor corresponda a max(total_revenue) em todos os fornecedores. Como resultado, a consulta calcula informações (l_suppkey, s_name, s_address, s_phone, total_revenue) sobre o fornecedor com a receita total máxima.

A consulta inteira é muito complicada para ser colocada em uma visualização materializada incremental. No entanto, a CTE supplier é uma agregação sobre uma única tabela, um padrão de consulta aceito por visualizações materializadas incrementais. A CTE supplier também é a parte mais cara da consulta em termos computacionais. Portanto, se a consulta de exemplo foi executada repetidamente em tabelas de origem em constante mudança, o recomendador de visualização materializada poderá sugerir colocar a CTE supplier em uma visualização materializada. A recomendação de visualização materializada para a consulta de exemplo anterior pode ser semelhante a esta:

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

A API Recommender também retorna informações de execução de consulta na forma de insights. Insights são descobertas que ajudam você a entender a carga de trabalho do seu projeto, fornecendo mais contexto sobre como uma recomendação de visualização materializada pode melhorar os custos da carga de trabalho.

Limitações

Antes de começar

Antes de visualizar ou aplicar recomendações de visualização materializada, você precisa ativar a API Recommender.

Permissões necessárias

Para ter as permissões necessárias para acessar as recomendações de visualização materializada, peça ao administrador para conceder a você o papel do IAM Leitor do recomendador de visualizações materializadas do BigQuery (roles/recommender.bigqueryMaterializedViewViewer). Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para acessar recomendações de visualização materializada. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para acessar as recomendações de visualização materializada:

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

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Introdução ao IAM.

Visualizar recomendações de visualização materializada

Nesta seção, descrevemos como acessar insights e recomendações de visualização materializada usando o console do Google Cloud, a CLI do Google Cloud ou a API Recommender.

Selecione uma das seguintes opções:

Console

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. Clique em Recomendações .

    Clique em "Recomendações" para ver todas as sugestões.

  3. O painel Recomendações do BigQuery será aberto. Em Otimizar o custo da carga de trabalho do BigQuery, clique em Visualizar detalhes.

    Visualizar os detalhes para conferir todas as recomendações do BigQuery

  4. Uma lista de recomendações será exibida, mostrando todas as recomendações geradas para o projeto atual. Cada recomendação nessa lista exibirá as economias aproximadas se a recomendação tiver sido aplicada. Para mais informações sobre uma recomendação de visualização materializada específica ou insight de tabela, clique em Detalhes.

gcloud

Para visualizar recomendações de visualização materializada para um projeto específico, use o comando gcloud recommender recommendations list:

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

Substitua:

  • PROJECT_NAME: o nome do projeto que executa jobs de consulta
  • REGION_NAME: a região em que os jobs de consulta são executados
  • FORMAT_TYPE: um formato de saída da CLI gcloud com suporte. Por exemplo, JSON
A tabela a seguir descreve os campos importantes da resposta "recommendations":

Propriedade Relevante para o subtipo Descrição
recommenderSubtype CREATE_MATERIALIZED_VIEW O tipo de recomendação.
content.overview.sql CREATE_MATERIALIZED_VIEW Instrução DDL sugerida que cria uma visualização materializada.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Estimativa de milissegundos de slot a serem salvos mensalmente pela visualização sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Estimativa de bytes verificados para serem salvos mensalmente pela visualização sugerida.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Reservado para uso futuro.

Para visualizar insights que solicitaram recomendações de visualização materializada usando a gcloud CLI, use o comando gcloud recommender insights list:

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

Substitua:

  • PROJECT_NAME: o nome do projeto que executa jobs de consulta
  • REGION_NAME: a região em que os jobs de consulta são executados
  • FORMAT_TYPE: um formato de saída da CLI gcloud com suporte. Por exemplo, JSON
A tabela a seguir descreve os campos importantes da resposta da API Insights:

Propriedade Relevante para o subtipo Descrição
content.queryCount CREATE_MATERIALIZED_VIEW Número de consultas no período de observação com padrão repetitivo que podem ser otimizadas usando a visualização materializada.

API REST

Para visualizar recomendações de visualização materializada para um projeto específico, use a API REST. Com cada comando, é necessário fornecer um token de autenticação, que é possível receber usando a CLI gcloud. Para mais informações sobre como receber um token de autenticação, consulte Métodos para receber um token de ID.

Use a solicitação curl list para ver todas as recomendações de um projeto específico:

$ 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

Substitua:

  • PROJECT_NAME: o nome do projeto que contém a tabela do BigQuery
  • LOCATION: o local onde o projeto está localizado.
A tabela a seguir descreve os campos importantes da resposta "recommendations":

Propriedade Relevante para o subtipo Descrição
recommenderSubtype CREATE_MATERIALIZED_VIEW O tipo de recomendação.
content.overview.sql CREATE_MATERIALIZED_VIEW Instrução DDL sugerida que cria uma visualização materializada.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Estimativa de milissegundos de slot a serem salvos mensalmente pela visualização sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Estimativa de bytes verificados para serem salvos mensalmente pela visualização sugerida.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Reservado para uso futuro.

Para visualizar insights que solicitaram recomendações de visualização materializadas usando a API REST, execute o seguinte comando:

$ 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

Substitua:

  • PROJECT_NAME: o nome do projeto que contém a tabela do BigQuery
  • LOCATION: o local onde o projeto está localizado.
A tabela a seguir descreve os campos importantes da resposta da API Insights:

Propriedade Relevante para o subtipo Descrição
content.queryCount CREATE_MATERIALIZED_VIEW Número de consultas no período de observação com padrão repetitivo que podem ser otimizadas usando a visualização materializada.

Aplicar recomendações de visualização materializada

É possível aplicar uma recomendação para criar uma visualização materializada executando a instrução DDL do tipo CREATE MATERIALIZED VIEW sugerida no console do Google Cloud.

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. Clique em Recomendações .

    Clique em "Recomendações" para ver todas as sugestões.

  3. O painel Recomendações do BigQuery será aberto. Em Otimizar o custo da carga de trabalho do BigQuery, clique em Visualizar detalhes.

    Visualizar os detalhes para conferir todas as recomendações do BigQuery

  4. Uma lista de recomendações será exibida, mostrando todas as recomendações geradas para o projeto atual. Localize uma recomendação de visualização materializada e clique em Detalhes.

  5. Clique em Visualizar no BigQuery Studio. Um editor SQL será aberto com uma instrução DDL CREATE MATERIALIZED VIEW.

  6. Na instrução CREATE MATERIALIZED VIEW fornecida, modifique o marcador de posição MATERIALIZED_VIEW com um nome exclusivo de visualização materializada.

  7. Execute a instrução DDL CREATE MATERIALIZED VIEW para criar uma visualização materializada recomendada.

Resolver problemas de recomendação

Problema: nenhuma recomendação é exibida para uma tabela específica.

As recomendações de visualização materializada podem não aparecer nas seguintes circunstâncias:

  • Não há padrões de consulta recorrentes entre os jobs de consulta executados por um projeto.
  • Os padrões de consulta recorrentes não atendem às limitações de visualizações materializadas incrementais e não podem ser colocados em uma visualização materializada adequada para ajustes inteligentes.
  • A visualização materializada em potencial teria um alto custo de manutenção. Por exemplo, as tabelas de origem geralmente são modificadas por operações de linguagem de manipulação de dados (DML) e, portanto, uma visualização materializada passa por uma atualização completa, o que gera mais custos.
  • Há um número insuficiente de consultas que têm um padrão recorrente comum.
  • A economia mensal estimada é muito insignificante (menos de 1 slot).
  • Os jobs de consulta executados pelo projeto já usam visualizações materializadas.

Preços

Não há custo ou impacto negativo no desempenho da carga de trabalho quando você visualiza recomendações.

Ao aplicar recomendações criando visualizações materializadas, pode haver custos de armazenamento, manutenção e consulta. Para mais informações, consulte Preços de visualizações materializadas.