Gestire i suggerimenti vista materializzata

Questo documento descrive il funzionamento del consigliatore vista materializzata e mostra anche come visualizzare e applicare eventuali consigli per le vista materializzata.

Introduzione

Il recommender vista materializzata di BigQuery può aiutarti a migliorare le prestazioni dei workload e a risparmiare sui costi di esecuzione dei workload. Questi consigli si basano sulle caratteristiche storiche di esecuzione delle query degli ultimi 30 giorni.

Le viste materializzate sono viste predefinite che memorizzano nella cache i risultati di una query periodicamente per migliorare le prestazioni e l'efficienza. Le viste materializzate utilizzano l'ottimizzazione intelligente per riscrivere in modo trasparente le query sulle tabelle di origine in modo da utilizzare le viste materializzate esistenti per migliorare le prestazioni e l'efficienza.

Come funziona il recommender

Il recommender genera consigli giornalieri per ogni progetto che esegue job di query in BigQuery. I suggerimenti si basano sull'analisi dell'esecuzione del workload negli ultimi 30 giorni. Il recommender vista materializzata cerca pattern di query ripetitivi e calcola gli eventuali risparmi che potrebbero essere realizzati se la sottoquery ripetitiva potesse essere spostata in una vista materializzata incrementale. Il motore per suggerimenti prende in considerazione eventuali risparmi al momento della query e il costo di manutenzione dell'account per la vista materializzata. Se la combinazione di questi fattori indica un risultato positivo significativo, il recommender fornisce un consiglio.

Considera l'esempio di query seguente:

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

Questo esempio di query mostra informazioni sul fornitore principale. La query contiene un'espressione tabella comune (CTE) denominata revenue che rappresenta le entrate totali per ogni fornitore (l_suppkey). revenue viene unito alla tabella fornitore a condizione che total_revenue del fornitore corrisponda max(total_revenue) in tutti i fornitori. Di conseguenza, la query calcola informazioni (l_suppkey, s_name, s_address, s_phone, total_revenue) sul fornitore con le entrate totali massime.

L'intera query è troppo complicata per essere inserita in una vista materializzata incrementale. Tuttavia, la CTE supplier è un'aggregazione su una singola tabella, un pattern di query supportato dalle visualizzazioni materializzate incrementali. La CTE supplier è anche la parte più dispendiosa in termini di calcolo della query. Pertanto, se la query di esempio è stata eseguita ripetutamente su tabelle di origine in costante evoluzione, il consigliatore di vista materializzata potrebbe suggerire di inserire la CTE supplier in una vista materializzata. Il consiglio per la vista materializzata per la query di esempio precedente potrebbe essere simile al seguente:

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

L'API Recommender restituisce anche informazioni sull'esecuzione delle query sotto forma di approfondimenti. Gli approfondimenti sono risultati che ti aiutano a comprendere il carico di lavoro del tuo progetto, fornendo più contesto su come un consiglio per le visualizzazioni materializzate potrebbe migliorare i costi del carico di lavoro.

Limitazioni

Prima di iniziare

Prima di poter visualizzare o applicare i suggerimenti vista materializzata, devi abilitare l'API Recommender.

Autorizzazioni obbligatorie

Per ottenere le autorizzazioni necessarie per accedere ai consigli vista materializzata, chiedi all'amministratore di concederti il ruolo IAM BigQuery Materialized View Recommender Viewer (roles/recommender.bigqueryMaterializedViewViewer). Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per accedere ai consigli sulle visualizzazioni materializzate. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per accedere ai suggerimenti sulle vista materializzata sono necessarie le seguenti autorizzazioni:

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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.

Visualizzare i suggerimenti sulle vista materializzata

Questa sezione descrive come visualizzare i consigli e gli approfondimenti sulle vista materializzata utilizzando la console Google Cloud, Google Cloud CLI o l'API Recommender.

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic su Consigli.

    Fai clic su Consigli per visualizzare tutti i consigli.

  3. Viene visualizzato il riquadro Suggerimenti di BigQuery. In Ottimizza i costi dei workload BigQuery, fai clic su Visualizza dettagli.

    Visualizza dettagli per visualizzare tutti i suggerimenti di BigQuery

  4. Viene visualizzato un elenco di consigli che mostra tutti i consigli generati per il progetto corrente. Per visualizzare ulteriori informazioni su un consiglio per una vista materializzata o un'intuizione della tabella, fai clic su Dettagli.

In alternativa, puoi visualizzare tutti i consigli disponibili per il tuo progetto o la tua organizzazione facendo clic su Consigli nel menu di navigazione laterale.

gcloud

Per visualizzare i suggerimenti vista materializzata per un progetto specifico, utilizza il comando gcloud recommender recommendations list:

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

Sostituisci quanto segue:

La tabella seguente descrive i campi importanti della risposta "recommendations":

Proprietà Pertinente per il sottotipo Descrizione
recommenderSubtype CREATE_MATERIALIZED_VIEW Il tipo di consiglio.
content.overview.sql CREATE_MATERIALIZED_VIEW Istruzione DDL suggerita che crea una vista materializzata.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Milisecondi di slot stimati da risparmiare mensilmente in base alla visualizzazione suggerita.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Byte analizzati stimati da salvare mensilmente in base alla visualizzazione suggerita.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Riservato per uso futuro.

Per visualizzare gli approfondimenti che hanno generato i consigli sulle vista materializzata utilizzando gcloud CLI, utilizza il comando gcloud recommender insights list:

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

Sostituisci quanto segue:

La seguente tabella descrive i campi importanti della risposta dell'API di approfondimenti:

Proprietà Pertinente per il sottotipo Descrizione
content.queryCount CREATE_MATERIALIZED_VIEW Numero di query nel periodo di osservazione con pattern ripetitivi che possono essere ottimizzati utilizzando la vista materializzata.

API REST

Per visualizzare i suggerimenti per vista materializzata per un progetto specifico, utilizza l'API REST. Con ogni comando, devi fornire un token di autenticazione, che puoi ottenere utilizzando gcloud CLI. Per maggiori informazioni su come ottenere un token di autenticazione, consulta Metodi per ottenere un token ID.

Puoi utilizzare la richiesta curl list per visualizzare tutti i consigli per un progetto specifico:

$ 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

Sostituisci quanto segue:

  • PROJECT_NAME: il nome del progetto contenente la tabella BigQuery
  • LOCATION: la posizione in cui si trova il progetto.
La tabella seguente descrive i campi importanti della risposta "recommendations":

Proprietà Pertinente per il sottotipo Descrizione
recommenderSubtype CREATE_MATERIALIZED_VIEW Il tipo di consiglio.
content.overview.sql CREATE_MATERIALIZED_VIEW Istruzione DDL suggerita che crea una vista materializzata.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Milisecondi di slot stimati da risparmiare mensilmente in base alla visualizzazione suggerita.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Byte analizzati stimati da salvare mensilmente in base alla visualizzazione suggerita.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Riservato per uso futuro.

Per visualizzare gli approfondimenti che hanno generato i consigli vista materializzata utilizzando l'API REST, esegui il seguente 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

Sostituisci quanto segue:

  • PROJECT_NAME: il nome del progetto contenente la tabella BigQuery
  • LOCATION: la posizione in cui si trova il progetto.
La seguente tabella descrive i campi importanti della risposta dell'API di approfondimenti:

Proprietà Pertinente per il sottotipo Descrizione
content.queryCount CREATE_MATERIALIZED_VIEW Numero di query nel periodo di osservazione con pattern ripetitivi che possono essere ottimizzati utilizzando la vista materializzata.

Visualizza i consigli con INFORMATION_SCHEMA

Puoi anche visualizzare i consigli e gli approfondimenti utilizzando le INFORMATION_SCHEMA visualizzazioni. Ad esempio, puoi utilizzare la visualizzazione INFORMATION_SCHEMA.RECOMMENDATIONS per visualizzare i tre consigli principali in base al risparmio di slot, come mostrato nell'esempio seguente:

+---------------------------------------------------+--------------------------------------------------------------------------------------------------+
|                    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
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+

Per maggiori informazioni, consulta le seguenti risorse:

Applicare i suggerimenti vista materializzata

Puoi applicare un consiglio per creare una vista materializzata eseguendo l'istruzione DDL di tipo CREATE MATERIALIZED VIEW suggerita nella console Google Cloud.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Fai clic su Consigli.

    Fai clic su Consigli per visualizzare tutti i consigli.

  3. Viene visualizzato il riquadro Suggerimenti di BigQuery. In Ottimizza i costi dei workload BigQuery, fai clic su Visualizza dettagli.

    Visualizza dettagli per visualizzare tutti i suggerimenti di BigQuery

  4. Viene visualizzato un elenco di consigli che mostra tutti i consigli generati per il progetto o l'organizzazione corrente, a seconda dell'ambito selezionato. Individua un suggerimento per vista materializzata e fai clic su Dettagli.

  5. Fai clic su Visualizza in BigQuery Studio. Si apre un editor SQL contenente un'CREATE MATERIALIZED VIEWistruzione DDL.

  6. Nell'istruzione CREATE MATERIALIZED VIEW fornita, modifica il segnaposto MATERIALIZED_VIEW con un nome univoco della vista materializzata.

  7. Esegui l'istruzione DDL CREATE MATERIALIZED VIEW per creare una vista materializzata consigliata.

Risolvere i problemi relativi ai consigli

Problema: non vengono visualizzati consigli per una tabella specifica.

I suggerimenti sulle viste materializzate potrebbero non essere visualizzati nelle seguenti circostanze:

  • Non sono stati trovati pattern di query ricorrenti tra i job di query eseguiti da un progetto.
  • I pattern di query ricorrenti non soddisfano i limiti per le visualizzazioni materializzate incrementali e non possono essere inseriti in una vista materializzata adatta per l'ottimizzazione intelligente.
  • La potenziale vista materializzata avrebbe un costo di manutenzione elevato. Ad esempio, le tabelle di origine vengono spesso modificate dalle operazioni del data manipulation language (DML) e, pertanto, una vista materializzata viene sottoposta a un aggiornamento completo, con ulteriori costi.
  • Non è presente un numero sufficiente di query con un pattern ricorrente comune.
  • I risparmi mensili stimati sono troppo insignificanti (meno di 1 slot).
  • I job di query eseguiti dal progetto utilizzano già le viste materializzate.

Prezzi

La visualizzazione dei consigli non ha alcun costo né un impatto negativo sul rendimento del carico di lavoro.

Quando applichi i consigli creando viste materializzate, potresti dover sostenere costi di archiviazione, manutenzione e query. Per ulteriori informazioni, consulta la sezione Prezzi delle visualizzazioni con dati materiali.