Ottimizza l'archiviazione in BigQuery

Questa pagina fornisce le best practice per ottimizzare lo spazio di archiviazione di BigQuery. BigQuery archivia i dati in formato a colonne. I database orientati alle colonne sono ottimizzati per i carichi di lavoro analitici che aggregano i dati su un numero molto elevato di record. Poiché le colonne hanno in genere più ridondanza delle righe, questa caratteristica consente una maggiore compressione dei dati mediante l'utilizzo di tecniche come la codifica di esecuzione. Per saperne di più su come BigQuery archivia i dati, consulta Panoramica dell'archiviazione di BigQuery. L'ottimizzazione dello spazio di archiviazione di BigQuery migliora le prestazioni delle query e controlla i costi.

BigQuery fornisce dettagli sul consumo di archiviazione delle risorse. Per visualizzare i metadati di archiviazione della tabella, esegui una query sulle seguenti viste INFORMATION_SCHEMA:

Dati tabella del cluster

Best practice: crea tabelle in cluster.

Per ottimizzare l'archiviazione per le query, inizia con il clustering dei dati della tabella. Eseguendo il clustering delle colonne utilizzate di frequente, puoi ridurre il volume totale dei dati analizzati dalla query. Per informazioni su come creare cluster, consulta Creare e utilizzare tabelle in cluster.

Dati della tabella di partizione

Best practice: puoi dividere le tabelle di grandi dimensioni con le partizioni.

Con le partizioni, puoi raggruppare e ordinare i dati in base a un insieme di caratteristiche delle colonne definite, ad esempio una colonna con numeri interi, una colonna di unità di tempo o il tempo di importazione. Il partizionamento migliora le prestazioni delle query e il controllo dei costi riducendo il numero di byte letti da una query.

Per saperne di più sulle partizioni, vedi Introduzione alle tabelle partizionate.

Utilizza le impostazioni di scadenza della tabella e della partizione

Best practice: per ottimizzare l'archiviazione, configura le impostazioni di scadenza predefinite per set di dati, tabelle e tabelle partizionate.

Puoi controllare i costi di archiviazione e ottimizzare l'utilizzo dello spazio di archiviazione impostando la scadenza predefinita per le tabelle appena create in un set di dati. Quando una tabella scade, viene eliminata insieme a tutti i dati al suo interno. Se imposti la proprietà al momento della creazione del set di dati, qualsiasi tabella creata nel set di dati viene eliminata dopo il periodo di scadenza. Se imposti la proprietà dopo la creazione del set di dati, vengono eliminate solo le nuove tabelle dopo il periodo di scadenza.

Ad esempio, se imposti la scadenza predefinita della tabella su sette giorni, i dati meno recenti vengono eliminati automaticamente dopo una settimana.

Questa opzione è utile se hai bisogno di accedere solo ai dati più recenti. È utile anche se stai sperimentando con i dati e non hai bisogno di conservarli.

Se le tabelle sono partizionate per data, alle singole partizioni si applica la scadenza predefinita della tabella del set di dati. Puoi anche controllare la scadenza della partizione utilizzando il flag time_partitioning_expiration nello strumento a riga di comando bq o l'impostazione di configurazione expirationMs nell'API. Quando una partizione scade, i dati nella partizione vengono eliminati, ma la tabella partizionata non viene eliminata anche se la tabella è vuota. Ad esempio, il seguente comando fa scadere le partizioni dopo tre giorni:

bq mk \
--time_partitioning_type=DAY \
--time_partitioning_expiration=259200 \
project_id:dataset.table

Archivia i dati in BigQuery

Best practice:archivia i dati in BigQuery.

Quando carichi dati in BigQuery da Cloud Storage, l'operazione di caricamento non prevede alcun costo, mentre l'archiviazione dei dati in Cloud Storage comporta addebiti. Dopo essere stati caricati in BigQuery, i dati sono soggetti ai prezzi di archiviazione di BigQuery. Ti vengono addebitati i costi per l'archiviazione fisica o logica che la tabella utilizza, inclusi i blocchi di archiviazione dei viaggi nel tempo.

Anziché esportare i dati meno recenti in un'altra opzione di archiviazione (come Cloud Storage), sfrutta i prezzi dell'archiviazione a lungo termine di BigQuery.

Se una tua tabella non viene modificata per 90 giorni consecutivi, il relativo prezzo di archiviazione diminuisce automaticamente del 50%. Se hai una tabella partizionata, ogni partizione viene considerata separatamente per l'idoneità ai prezzi a lungo termine e soggetta alle stesse regole delle tabelle non partizionate.

Identificare i dati a lungo o a breve termine

Best practice: identifica se i dati a livello di riga devono essere archiviati a lungo termine e archivia solo i dati aggregati a lungo termine.

In molti casi, i dettagli contenuti nei dati transazionali o a livello di riga sono utili nel breve termine, ma vengono indicati meno nel lungo termine. In questi casi, puoi creare query di aggregazione per calcolare e archiviare le metriche associate a questi dati e poi utilizzare la scadenza della tabella o della partizione per rimuovere sistematicamente i dati a livello di riga. Questo riduce i costi di archiviazione mantenendo le metriche disponibili per il consumo a lungo termine.

Ridurre la finestra di spostamento cronologico

Best practice:in base alle tue esigenze, puoi ridurre la finestra di spostamento cronologico.

La riduzione del tempo di viaggio giorni dal valore predefinito di sette riduce il numero totale di blocchi di archiviazione archiviati per un oggetto. La finestra di spostamento cronologico è impostata a livello del set di dati.

Archivia i dati in Cloud Storage

Best practice: valuta la possibilità di archiviare i dati in Cloud Storage.

Puoi spostare i dati da BigQuery a Cloud Storage in base alle esigenze aziendali di archiviazione. Come best practice, valuta i prezzi a lungo termine di BigQuery prima di esportare i dati da BigQuery.

Passaggi successivi