Gestisci i suggerimenti per le vista materializzata
Questo documento descrive il funzionamento del motore per suggerimenti della vista materializzata e mostra anche come visualizzare e applicare eventuali suggerimenti per le viste materializzate.
introduzione
Il motore per suggerimenti con vista materializzata BigQuery può aiutarti a migliorare le prestazioni dei carichi di lavoro e ridurre i costi di esecuzione. Questi suggerimenti si basano sulle caratteristiche di esecuzione storiche delle query negli ultimi 30 giorni.
Le viste materializzate sono viste precalcolate che periodicamente memorizzano nella cache i risultati di una query per migliorare prestazioni ed efficienza. Le viste materializzate utilizzano l'ottimizzazione intelligente per riscrivere in modo trasparente le query rispetto alle tabelle di origine al fine di utilizzare le viste materializzate esistenti per migliorare le prestazioni e l'efficienza.
Come funziona il motore per suggerimenti
Il motore per suggerimenti genera suggerimenti ogni giorno per ogni progetto che esegue job di query in BigQuery. I suggerimenti si basano sull'analisi dell'esecuzione del carico di lavoro negli ultimi 30 giorni. Il motore per suggerimenti della vista materializzata cerca pattern di query ripetitivi e calcola gli eventuali risparmi che potrebbero essere ottenuti se la sottoquery ripetitiva potesse essere spostata in una vista materializzata incrementale. Il motore per suggerimenti tiene conto di eventuali risparmi al momento delle query e dei costi di manutenzione per la vista materializzata. Se questi fattori combinati mostrano un risultato positivo significativo, il motore per suggerimenti fa una raccomandazione.
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 di primo livello. La query contiene un'espressione di tabella (CTE) comune denominata revenue
che rappresenta le entrate totali per ogni fornitore (l_suppkey
). revenue
viene unito alla tabella dei fornitori a condizione che il valore total_revenue
del fornitore corrisponda a max(total_revenue)
in tutti i fornitori. Di conseguenza, la query calcola le informazioni (l_suppkey
, s_name
, s_address
, s_phone
, total_revenue
) sul fornitore con le entrate totali massime.
L'intera query in sé è troppo complicata per essere inserita in una
vista materializzata incrementale. Tuttavia, il CTE supplier
è un'aggregazione su una singola
tabella, un modello di query supportato dalle visualizzazioni materializzate incrementali. La CTE supplier
è anche la parte più costosa della query dal punto di vista del calcolo. Di conseguenza, se la query di esempio è stata eseguita ripetutamente su tabelle di origine che cambiano costantemente, il motore per suggerimenti della vista materializzata potrebbe suggerire di inserire il CTE supplier
in una vista materializzata. Il suggerimento per vista materializzata per la precedente query di esempio 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 insight. Gli approfondimenti sono risultati che ti aiutano a comprendere il carico di lavoro del progetto e forniscono più contesto su come un suggerimento di visualizzazione materializzata potrebbe migliorare i costi del carico di lavoro.
Limitazioni
- Il motore per suggerimenti della vista materializzata non supporta la procedura standard di disattivazione del trattamento dati. Per interrompere la ricezione dei suggerimenti vista materializzata, segui le istruzioni nel modulo di registrazione pre-GA di Gemini in BigQuery.
- I suggerimenti vista materializzata non possono essere esportati in BigQuery.
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 suggerimenti vista materializzata,
chiedi all'amministratore di concederti il ruolo IAM
Visualizzatore motore per suggerimenti su viste materializzate BigQuery (roles/recommender.bigqueryMaterializedViewViewer
).
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per accedere ai suggerimenti vista materializzata. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per accedere ai suggerimenti della vista materializzata sono necessarie le seguenti autorizzazioni:
-
recommender.bigqueryMaterializedViewRecommendations.get
-
recommender.bigqueryMaterializedViewRecommendations.list
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.
Visualizza i suggerimenti per vista materializzata
Questa sezione descrive come visualizzare suggerimenti e insight con vista materializzata utilizzando la console Google Cloud, Google Cloud CLI o l'API Recommender.
Seleziona una delle seguenti opzioni:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Fai clic su
Consigli.Si apre il riquadro Suggerimenti BigQuery. In Ottimizza il costo del carico di lavoro BigQuery, fai clic su Visualizza dettagli.
Viene visualizzato un elenco di suggerimenti con tutti quelli generati per il progetto corrente. Ogni consiglio in questo elenco mostra il risparmio approssimativo se è stato applicato. Per ulteriori informazioni su uno specifico consiglio sulla vista materializzata o un approfondimento sulla tabella, fai clic su Dettagli.
gcloud
Per visualizzare i suggerimenti delle visualizzazioni materializzate 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:
PROJECT_NAME
: il nome del progetto che esegue i job di queryREGION_NAME
: la regione in cui vengono eseguiti i job di queryFORMAT_TYPE
: un formato di output dell'interfaccia a riga di comando gcloud supportato, ad esempio JSON
Proprietà | Pertinenza del 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 |
Stima dei millisecondi di slot da salvare mensilmente in base alla visualizzazione suggerita. |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
Stima dei byte analizzati per il salvataggio mensile in base alla visualizzazione suggerita. |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
Riservato per un uso futuro. |
- Per ulteriori informazioni sugli altri campi nella risposta
recommendations
, consulta Risorsa REST:projects.locations.recommenders.recommendation
. - Per ulteriori informazioni sull'utilizzo dell'API Recommender, consulta Utilizzo dell'API - Suggerimenti.
Per visualizzare gli insight che hanno richiesto suggerimenti 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:
PROJECT_NAME
: il nome del progetto che esegue i job di queryREGION_NAME
: la regione in cui vengono eseguiti i job di queryFORMAT_TYPE
: un formato di output dell'interfaccia a riga di comando gcloud supportato, ad esempio JSON
Proprietà | Pertinenza del sottotipo | Descrizione |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
Numero di query nel periodo di osservazione con uno schema ripetitivo che può essere ottimizzato utilizzando la vista materializzata. |
- Per saperne di più sugli altri campi nella risposta degli insight, consulta Risorsa REST:
projects.locations.insightTypes.insights
. - Per saperne di più sull'utilizzo degli approfondimenti, consulta Utilizzo dell'API - Approfondimenti.
API REST
Per visualizzare i suggerimenti 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 saperne di più su come ottenere un token di autenticazione, consulta Metodi per ottenere un token ID.
Puoi utilizzare la richiesta curl list
per visualizzare tutti i suggerimenti 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 BigQueryLOCATION
: la località in cui si trova il progetto.
Proprietà | Pertinenza del 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 |
Stima dei millisecondi di slot da salvare mensilmente in base alla visualizzazione suggerita. |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
Stima dei byte analizzati per il salvataggio mensile in base alla visualizzazione suggerita. |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
Riservato per un uso futuro. |
- Per ulteriori informazioni sugli altri campi nella risposta
recommendations
, consulta Risorsa REST:projects.locations.recommenders.recommendation
. - Per ulteriori informazioni sull'utilizzo dell'API Recommender, consulta Utilizzo dell'API - Suggerimenti.
Per visualizzare gli insight che hanno richiesto suggerimenti sulle visualizzazioni materializzate utilizzando l'API REST, esegui questo 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 BigQueryLOCATION
: la località in cui si trova il progetto.
Proprietà | Pertinenza del sottotipo | Descrizione |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
Numero di query nel periodo di osservazione con uno schema ripetitivo che può essere ottimizzato utilizzando la vista materializzata. |
- Per saperne di più sugli altri campi nella risposta degli insight, consulta Risorsa REST:
projects.locations.insightTypes.insights
. - Per saperne di più sull'utilizzo degli approfondimenti, consulta Utilizzo dell'API - Approfondimenti.
Applica i suggerimenti della vista materializzata
Puoi applicare un suggerimento per creare una vista materializzata eseguendo l'istruzione DDL di tipo CREATE MATERIALIZED VIEW
suggerita nella console Google Cloud.
Nella console Google Cloud, vai alla pagina BigQuery.
Fai clic su
Consigli.Si apre il riquadro Suggerimenti BigQuery. In Ottimizza il costo del carico di lavoro BigQuery, fai clic su Visualizza dettagli.
Viene visualizzato un elenco di suggerimenti con tutti quelli generati per il progetto corrente. Individua un suggerimento relativo alla vista materializzata e fai clic su Dettagli.
Fai clic su Visualizza in BigQuery Studio. Si apre un editor SQL contenente un'istruzione DDL
CREATE MATERIALIZED VIEW
.Nell'istruzione
CREATE MATERIALIZED VIEW
fornita, modifica il segnapostoMATERIALIZED_VIEW
con un nome univoco della vista materializzata.Esegui l'istruzione DDL
CREATE MATERIALIZED VIEW
per creare una vista materializzata consigliata.
Risolvere i problemi relativi ai suggerimenti
Problema: non viene visualizzato nessun consiglio per una tabella specifica.
I suggerimenti della vista materializzata potrebbero non essere visualizzati nelle seguenti circostanze:
- Non è stato trovato alcun pattern di query ricorrente tra i job di query eseguiti da un progetto.
- I pattern di query ricorrenti non soddisfano le limitazioni per le viste materializzate incrementali e non possono essere inseriti in una vista materializzata adatta all'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, di conseguenza, una vista materializzata viene sottoposta ad aggiornamento completo, con costi aggiuntivi.
- Il numero di query non è sufficiente 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
Non sono previsti costi o effetti negativi sulle prestazioni dei carichi di lavoro quando visualizzi i suggerimenti.
L'applicazione dei suggerimenti mediante la creazione di viste materializzate può comportare costi di archiviazione, manutenzione ed esecuzione di query. Per ulteriori informazioni, consulta la sezione Prezzi delle viste materializzate.