Gestire i suggerimenti vista materializzata
Questo documento descrive il funzionamento del sistema di suggerimenti per le vista materializzata e mostra anche come visualizzare e applicare i suggerimenti per levista materializzatae.
Introduzione
Il sistema di suggerimenti per le vista materializzata BigQuery può aiutarti a migliorare le prestazioni dei workload e a ridurre i 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 precalcolate che memorizzano nella cache periodicamente i risultati di una query per migliorare le prestazioni e l'efficienza. Le viste materializzate utilizzano la sintonizzazione 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 sistema di raccomandazione
Recommender genera suggerimenti giornalieri per ogni progetto che esegue job di query in BigQuery. I consigli si basano sull'analisi dell'esecuzione del workload negli ultimi 30 giorni. Il sistema di suggerimenti per le viste materializzate cerca pattern di query ripetitivi e calcola eventuali risparmi che potrebbero essere realizzati se la sottoquery ripetitiva potesse essere spostata in una vista materializzata incrementale. Il motore per suggerimenti tiene conto di eventuali risparmi al momento della query e del costo di manutenzione dell'account per la vista materializzata. Se questi fattori combinati mostrano un risultato positivo significativo, il sistema di raccomandazione formula un consiglio.
Considera il seguente esempio di query:
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 di tabella comune (CTE) denominata revenue
che rappresenta le entrate totali
per ogni fornitore (l_suppkey
). revenue
viene unita alla tabella dei fornitori
a condizione che il total_revenue
del fornitore corrisponda
a max(total_revenue)
per 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 complessa per essere inserita in una vista materializzata
incrementale. Tuttavia, l'supplier
CTE è un'aggregazione su una singola
tabella, un pattern di query supportato dalle viste materializzate incrementali. La supplier
CTE è anche la parte della query che richiede più risorse di calcolo. Pertanto, se la query di esempio venisse eseguita ripetutamente su tabelle di origine in continua evoluzione, il sistema di suggerimenti per le viste materializzate potrebbe suggerire di inserire la CTE supplier
in una vista materializzata. Il suggerimento 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 maggiori informazioni su come un suggerimento per una vista materializzata potrebbe migliorare i costi del carico di lavoro.
Limitazioni
- Il motore per suggerimenti per le vista materializzata non supporta la procedura standard per disattivare il trattamento dei dati. Per interrompere la ricezione di suggerimenti sullevista materializzatae, segui le istruzioni riportate nel modulo di registrazione ai suggerimenti sulle viste materializzate.
- I suggerimenti sulle 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 BigQuery Materialized View Recommender Viewer (roles/recommender.bigqueryMaterializedViewViewer
).
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per accedere ai suggerimenti per vista materializzata. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
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 suggerimenti e gli insight sulle 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.
Nel menu di navigazione, fai clic su Suggerimenti.
Si apre il riquadro Suggerimenti di BigQuery. In Ottimizza i costi dei workload BigQuery, fai clic su Visualizza dettagli.
Viene visualizzato un elenco di consigli che mostra tutti i consigli generati per il progetto corrente. Per visualizzare ulteriori informazioni su un suggerimento o un approfondimento sulla tabella specifico per una vista materializzata, 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.
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:
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à | 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 |
Millisecondi di slot stimati da risparmiare mensilmente con la 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 l'uso futuro. |
- Per ulteriori informazioni sugli altri campi nella risposta
recommendations
, vedi Risorsa REST:projects.locations.recommenders.recommendation
. - Per saperne di più sull'utilizzo dell'API Recommender, consulta Utilizzo dell'API - Suggerimenti.
Per visualizzare gli approfondimenti che hanno generato i suggerimenti per 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à | Pertinente per il sottotipo | Descrizione |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
Numero di query nel periodo di osservazione con pattern ripetitivo che può essere ottimizzato utilizzando la vista materializzata. |
- Per saperne di più sugli altri campi nella risposta degli approfondimenti, vedi Risorsa REST:
projects.locations.insightTypes.insights
. - Per saperne di più sull'utilizzo degli approfondimenti, vedi Utilizzo dell'API - Approfondimenti.
API REST
Per visualizzare i suggerimenti per vista materializzata per un progetto specifico, utilizza l'API REST. Per ogni comando, devi fornire un token di autenticazione, che puoi ottenere utilizzando gcloud CLI. Per ulteriori 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 che contiene la tabella BigQueryLOCATION
: la località in cui si trova il progetto.
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 |
Millisecondi di slot stimati da risparmiare mensilmente con la 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 l'uso futuro. |
- Per ulteriori informazioni sugli altri campi nella risposta
recommendations
, vedi Risorsa REST:projects.locations.recommenders.recommendation
. - Per saperne di più sull'utilizzo dell'API Recommender, consulta Utilizzo dell'API - Suggerimenti.
Per visualizzare gli approfondimenti che hanno generato i consigli vista materializzata utilizzando l'API REST, esegui il comando seguente:
$ 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 che contiene la tabella BigQueryLOCATION
: la località in cui si trova il progetto.
Proprietà | Pertinente per il sottotipo | Descrizione |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
Numero di query nel periodo di osservazione con pattern ripetitivo che può essere ottimizzato utilizzando la vista materializzata. |
- Per saperne di più sugli altri campi nella risposta degli approfondimenti, vedi Risorsa REST:
projects.locations.insightTypes.insights
. - Per saperne di più sull'utilizzo degli approfondimenti, vedi Utilizzo dell'API - Approfondimenti.
Visualizzare i consigli con INFORMATION_SCHEMA
Puoi anche visualizzare i consigli e gli approfondimenti utilizzando le visualizzazioni INFORMATION_SCHEMA
. Ad esempio, puoi utilizzare la visualizzazione INFORMATION_SCHEMA.RECOMMENDATIONS
per
visualizzare i primi tre consigli in base al risparmio sugli 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:
INFORMATION_SCHEMA.RECOMMENDATIONS
visualizzazioneINFORMATION_SCHEMA.RECOMMENDATIONS_BY_ORGANIZATION
visualizzazioneINFORMATION_SCHEMA.INSIGHTS
visualizzazione
Applica i suggerimenti 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.
Nel menu di navigazione, fai clic su Suggerimenti.
Si apre il riquadro Suggerimenti di BigQuery. In Ottimizza i costi dei workload BigQuery, fai clic su Visualizza dettagli.
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.
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 per la vista materializzata.Esegui l'istruzione DDL
CREATE MATERIALIZED VIEW
per creare una vista materializzata consigliata.
Risolvere i problemi relativi ai consigli
Problema:non vengono visualizzati suggerimenti per una tabella specifica.
I suggerimenti sulle viste materializzate potrebbero non essere visualizzati nei seguenti casi:
- Non sono stati trovati pattern di query ricorrenti 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 di data manipulation language (DML) e pertanto una vista materializzata subirebbe un aggiornamento completo, con conseguenti costi aggiuntivi.
- Non è presente un numero sufficiente di query con un pattern ricorrente comune.
- I risparmi mensili stimati sono troppo insignificanti (meno di uno slot).
- I job di query eseguiti dal progetto utilizzano già le viste materializzate.
Prezzi
La visualizzazione dei suggerimenti non comporta costi né un impatto negativo sul rendimento del carico di lavoro.
Quando applichi i suggerimenti creando viste materializzate, puoi sostenere costi di archiviazione, manutenzione ed esecuzione di query. Per ulteriori informazioni, consulta la sezione Prezzi delle viste materializzate.