Ottimizzare lo spazio di archiviazione per le prestazioni delle query
Questa pagina fornisce best practice per ottimizzare lo spazio di archiviazione BigQuery per le prestazioni delle query. Puoi anche ottimizzare lo spazio di archiviazione in base al costo. Sebbene queste best practice si concentrino principalmente sulle tabelle che utilizzano lo spazio di archiviazione BigQuery, possono essere applicate anche alle tabelle esterne.
BigQuery archivia i dati in formato a colonne. I database orientati alle colonne sono ottimizzati per i carichi di lavoro di analisi 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 utilizzando tecniche come la codifica della lunghezza di esecuzione. Per saperne di più su come BigQuery immagazzina i dati, consulta Panoramica dello spazio di archiviazione BigQuery. L'ottimizzazione dello spazio di archiviazione BigQuery migliora le prestazioni delle query e controlla i costi.
BigQuery fornisce dettagli sul consumo di spazio di archiviazione delle tue risorse.
Per visualizzare i metadati dello spazio di archiviazione delle tabelle, esegui query sulle seguenti viste INFORMATION_SCHEMA
:
INFORMATION_SCHEMA.TABLE_STORAGE
INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE_BY_ORGANIZATION
Dati della tabella cluster
Best practice:crea tabelle in cluster.
Per ottimizzare lo spazio di archiviazione per le query, inizia raggruppando i dati delle tabelle. Raggruppando in cluster le colonne utilizzate di frequente, puoi ridurre il volume totale di dati sottoposti a scansione dalla query. Per informazioni su come creare cluster, consulta Creare e utilizzare tabelle in cluster.
Dati della tabella partizionata
Best practice:suddividi le tabelle di grandi dimensioni con le partizioni.
Con le partizioni, puoi raggruppare e ordinare i dati in base a un insieme di caratteristiche di colonna definite, ad esempio una colonna di dati interi, una colonna di unità di tempo o la data di importazione. Il partizionamento migliora le prestazioni delle query e controlla i costi riducendo il numero di byte letti da una query.
Per ulteriori informazioni sulle partizioni, consulta Introduzione alle tabelle partizionate.
Utilizzare le impostazioni di scadenza della tabella e della partizione
Best practice:per ottimizzare lo spazio di archiviazione, configura le impostazioni predefinite per la scadenza dei set di dati, delle tabelle e delle tabelle partizionate.
Puoi controllare i costi di archiviazione e ottimizzare l'utilizzo dello spazio di archiviazione impostando la scadenza predefinita della tabella per le tabelle appena create in un set di dati. Quando una tabella scade, viene eliminata insieme a tutti i dati in essa contenuti. Se imposti la proprietà al momento della creazione del set di dati, tutte le tabelle create nel set di dati vengono eliminate al termine del periodo di scadenza. Se imposti la proprietà dopo la creazione del set di dati, solo le nuove tabelle vengono eliminate dopo il periodo di scadenza.
Ad esempio, se imposti la scadenza predefinita della tabella su sette giorni, i dati precedenti vengono eliminati automaticamente dopo una settimana.
Questa opzione è utile se devi accedere solo ai dati più recenti. È anche utile se stai conducendo esperimenti sui dati e non devi conservarli.
Se le tabelle sono partizionate per data, la scadenza predefinita della tabella del set di dati si applica alle singole partizioni. 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 al suo interno vengono eliminati, ma la tabella partizionata non viene eliminata anche se è 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
Dati aggregati a lungo termine
Best practice:identifica se i dati a livello di riga devono essere archiviati a lungo termine e, in caso contrario, archivia solo i dati aggregati a lungo termine.
In molti casi, i dettagli contenuti nei dati transazionali o a livello di riga sono utili sul breve termine, ma vengono utilizzati meno nel lungo termine. In queste situazioni, puoi creare query di aggregazione per calcolare e memorizzare le metriche associate a questi dati, quindi utilizzare la scadenza della tabella o della partizione per rimuovere sistematicamente i dati a livello di riga. In questo modo, riduci gli addebiti per lo spazio di archiviazione mantenendo disponibili le metriche per il consumo a lungo termine.
Passaggi successivi
- Scopri come ottimizzare i costi.
- Scopri come ottimizzare la query.
- Scopri come ottimizzare le funzioni.