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
- O recomendador de visualização materializada não é compatível com o processo padrão para não participar do processamento de dados. Para deixar de receber recomendações de visualização materializada, siga as instruções no formulário de inscrição pré-GA do Gemini no BigQuery.
- Não é possível exportar as recomendações de visualização materializada para o BigQuery.
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 a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
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
No Console do Google Cloud, acesse a página BigQuery.
Clique em Recomendações
.O painel Recomendações do BigQuery será aberto. Em Otimizar o custo da carga de trabalho do BigQuery, clique em Visualizar detalhes.
Uma lista de recomendações será exibida, mostrando todas as recomendações geradas para o projeto atual. Para mais informações sobre uma recomendação de visualização materializada específica ou insight de tabela, clique em Detalhes.
Como alternativa, visualize todas as recomendações disponíveis para seu projeto ou organização clicando em Recomendações na navegação lateral.
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 consultaREGION_NAME
: a região em que os jobs de consulta são executadosFORMAT_TYPE
: um formato de saída da CLI gcloud com suporte. Por exemplo, JSON
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 saber mais sobre outros campos na resposta
recommendations
, consulte Recurso REST:projects.locations.recommenders.recommendation
. - Para mais informações sobre o uso da API Recommender, consulte Como usar a API - Recomendações.
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 consultaREGION_NAME
: a região em que os jobs de consulta são executadosFORMAT_TYPE
: um formato de saída da CLI gcloud com suporte. Por exemplo, JSON
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. |
- Para saber mais sobre outros campos na resposta de insights, consulte Recurso REST:
projects.locations.insightTypes.insights
. - Para mais informações sobre o uso de insights, consulte Como usar a API - Insights.
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 BigQueryLOCATION
: o local onde o projeto está localizado.
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 saber mais sobre outros campos na resposta
recommendations
, consulte Recurso REST:projects.locations.recommenders.recommendation
. - Para mais informações sobre o uso da API Recommender, consulte Como usar a API - Recomendações.
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 BigQueryLOCATION
: o local onde o projeto está localizado.
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. |
- Para saber mais sobre outros campos na resposta de insights, consulte Recurso REST:
projects.locations.insightTypes.insights
. - Para mais informações sobre o uso de insights, consulte Como usar a API - Insights.
Conferir recomendações com INFORMATION_SCHEMA
Você também pode conferir suas recomendações e insights usando INFORMATION_SCHEMA
visualizações. Por exemplo, é possível usar a visualização INFORMATION_SCHEMA.RECOMMENDATIONS
para
ver as três principais recomendações com base na economia de slots, conforme
o exemplo a seguir:
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+ | 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 +---------------------------------------------------+--------------------------------------------------------------------------------------------------+
Para saber mais, acesse os recursos a seguir:
- Visualização
INFORMATION_SCHEMA.RECOMMENDATIONS
- Visualização
INFORMATION_SCHEMA.RECOMMENDATIONS_BY_ORGANIZATION
- Visualização
INFORMATION_SCHEMA.INSIGHTS
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.
No Console do Google Cloud, acesse a página BigQuery.
Clique em Recomendações
.O painel Recomendações do BigQuery será aberto. Em Otimizar o custo da carga de trabalho do BigQuery, clique em Visualizar detalhes.
Uma lista de recomendações será exibida, mostrando todas as recomendações geradas para projeto ou organização atual, dependendo do escopo selecionado. Localize uma recomendação de visualização materializada e clique em Detalhes.
Clique em Visualizar no BigQuery Studio. Um editor SQL será aberto com uma instrução DDL
CREATE MATERIALIZED VIEW
.Na instrução
CREATE MATERIALIZED VIEW
fornecida, modifique o marcador de posiçãoMATERIALIZED_VIEW
com um nome exclusivo de visualização materializada.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.