Statistiche della tabella

Bigtable fornisce statistiche della tabella, ovvero metadati su una tabella, che forniscono informazioni di riepilogo sulla tabella, come il numero di righe o il numero medio di celle per colonna.

Questo documento descrive le statistiche delle tabelle e spiega come ottenerle utilizzando Google Cloud CLI. Prima di leggere questa pagina, devi comprendere il modello di archiviazione di Bigtable e avere familiarità con le best practice per la progettazione degli schemi e la garbage collection.

Le statistiche della tabella forniscono l'osservabilità di una tabella Bigtable. Possono essere utili per risolvere i problemi relativi alle prestazioni o allo spazio di archiviazione o per determinare l'origine dei costi di archiviazione. Possono anche aiutarti a determinare se stai archiviando più dati del necessario.

Precisione prevista

Quando recuperi le statistiche di una tabella, i dati che ottieni sono approssimativi: le statistiche della tabella riflettono lo stato della tabella in uno dei cluster dell'istanza al momento della compattazione più recente.

Un set completo di statistiche della tabella non è disponibile fino alla compattazione iniziale, che in genere avviene circa una settimana dopo la creazione della tabella. Le statistiche della tabella sono accurate rispetto alla compattazione più recente, che potrebbe risalire anche a una settimana fa.

Campi delle statistiche della tabella

Una richiesta di statistiche di una tabella restituisce i seguenti campi. I dettagli e gli esempi sono riportati nella sezione successiva.

Campo delle statistiche della tabella Nome API Descrizione
Conteggio delle righe row_count Il numero di righe nella tabella. Per maggiori dettagli, consulta Conteggio righe.
Numero medio di colonne per riga average_columns_per_row Il numero medio di colonne in ogni riga per l'intera tabella. Per i dettagli e un esempio, consulta Numero medio di colonne per riga .
Numero medio di celle per colonna average_cells_per_column Il numero medio di celle archiviate in tutte le colonne di tutte le righe. Per maggiori dettagli, consulta Numero medio di celle per colonna.
Dati logici in byte logical_data_bytes La quantità di spazio occupata dalla tabella. Per maggiori dettagli, consulta Dati logici in byte.

Le statistiche della tabella includono anche i seguenti campi per ogni famiglia di colonne della tabella.

Campo delle statistiche della famiglia di colonne Nome API Descrizione
Numero medio di colonne per riga average_columns_per_row Il numero medio di colonne per riga nella famiglia di colonne. Per maggiori dettagli e un esempio, consulta Numero medio di colonne per riga.
Numero medio di celle per colonna average_cells_per_column Il numero di celle in ogni colonna, calcolato come media di tutte le righe che hanno colonne nella famiglia di colonne. Per maggiori dettagli e un esempio, consulta Numero medio di celle per colonna.
Dati logici in byte logical_data_bytes La quantità di spazio occupata dalla famiglia di colonne. Per maggiori dettagli, consulta Dati logici in byte.

Dettagli dei campi delle statistiche della tabella

Conteggio delle righe

Il conteggio delle righe è il numero di righe nella tabella. Ogni riga è identificata dalla relativa chiave di riga.

Numero medio di colonne per riga

Per ottenere il numero medio di colonne per riga di una tabella, Bigtable conta il numero di colonne nell'intera tabella e divide questo valore per il numero di righe della tabella.

Ad esempio, considera la seguente tabella. La prima riga ha tre colonne, mentre la seconda ne ha due.

Chiave di riga Famiglia di colonne family-A Famiglia di colonne family-B
chiave di riga 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
chiave di riga 2 family-A:qualifier-W family-B:qualifier-Z

La tabella ha cinque colonne e due righe, quindi il numero medio di colonne per riga è 2.5.

Questa statistica ti dà un'idea generale se la tabella è alta e stretta (poche colonne per riga) o bassa e larga (molte colonne in ogni riga).

Numero medio di celle per colonna

Per ottenere il numero medio di celle per colonna di una tabella, Bigtable prende il numero totale di celle archiviate nella tabella e lo divide per il numero di colonne della tabella.

A seconda della progettazione dello schema e delle policy di garbage collection, la tabella potrebbe avere più celle in una colonna o una sola. Il numero di celle che puoi archiviare è limitato dalle dimensioni dei dati descritte nella pagina Quote e limiti in Dimensioni dei dati all'interno delle tabelle.

Se questo numero è superiore al previsto, esamina le regole di garbage collection per verificare se stai conservando più celle del necessario. Potresti anche chiederti se lo schema e i pattern di scrittura devono essere modificati.

Dati logici in byte (tabella)

Questo valore rappresenta il numero approssimativo di byte non compressi necessari per leggere l'intera tabella. Questa statistica della tabella ti dà un'idea del volume di dati non elaborati archiviati nella tabella.

Confronta le dimensioni logiche con l'utilizzo dello spazio di archiviazione

Bigtable comprime automaticamente i dati quando li scrive su disco. Di conseguenza, le dimensioni della tabella riportate come Utilizzo dello spazio di archiviazione (byte) in Cloud Monitoring e nella pagina di riepilogo del cluster riflettono lo spazio di archiviazione fisico compresso su disco, anziché le dimensioni dei dati logici non compressi. Anche la fatturazione per lo spazio di archiviazione si basa su queste dimensioni fisiche compresse.

Conoscere entrambi i valori ti aiuta a valutare il rapporto di compressione effettivo:

  • Risparmio sulla compressione: dividendo i dati logici in byte per l'utilizzo dello spazio di archiviazione in byte, ottieni una stima del rapporto di compressione. Ad esempio, se la tabella contiene 10 TB di dati logici e consuma 2,5 TB di spazio di archiviazione su disco, il rapporto di compressione è di circa 4:1.

  • Dati non compressi o precompressi: se l'utilizzo dello spazio di archiviazione in Cloud Monitoring è uguale o superiore ai dati logici in byte, i dati potrebbero essere archiviati in un formato che non si comprime facilmente (ad esempio dati criptati o compressi prima della scrittura in Bigtable) oppure la tabella potrebbe contenere valori di celle superiori a 1 MiB, che Bigtable non comprime automaticamente. Per saperne di più su come Bigtable comprime i dati, consulta Compressione dei dati.

  • Dati sovrascritti o eliminati in attesa di compattazione: le nuove mutazioni vengono compresse non appena vengono scritte sul disco, non durante la compattazione. Tuttavia, quando sovrascrivi o elimini i dati, le versioni precedenti delle celle e gli indicatori di eliminazione (tombstone) rimangono sul disco e vengono conteggiati ai fini dell'utilizzo dello spazio di archiviazione, fino a quando la compattazione successiva non li rimuove definitivamente. Inoltre, le statistiche della tabella riflettono la tabella al momento della compattazione più recente, mentre l'utilizzo dello spazio di archiviazione in Cloud Monitoring si aggiorna continuamente man mano che vengono scritti nuovi dati.

Dettagli del campo delle statistiche della famiglia di colonne

Le statistiche di una tabella includono i seguenti campi per ogni famiglia di colonne nella tabella.

Numero medio di colonne per riga

Questo numero viene calcolato dividendo il numero di colonne nella famiglia di colonne per il numero di righe nella tabella.

Ad esempio, considera la seguente tabella. La tabella ha tre righe con colonne nelle famiglie di colonne family-A e family-B.

Chiave di riga Famiglia di colonne family-A Famiglia di colonne family-B
chiave di riga 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
chiave di riga 2 family-A:qualifier-W
chiave di riga 3 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y family-B:qualifier-Z

La famiglia di colonne family-A ha un totale di cinque colonne nella tabella. Diviso per tre righe, significa che il numero medio di celle per colonna per family-A è 1.67 (arrotondato qui a due cifre decimali).

La famiglia di colonne family-B ha un totale di tre colonne nella tabella. Diviso per tre righe, il numero medio di colonne per riga per family-A è 1.

Numero medio di celle per colonna

Per determinare il numero medio di celle per colonna di una famiglia di colonne, Bigtable prende il conteggio di tutte le celle della famiglia di colonne in tutte le righe della tabella e lo divide per il numero di righe della tabella.

Ad esempio, considera le seguenti righe nella famiglia di colonne family-D.

Chiave di riga Famiglia di colonne family-D
chiave di riga 1 family-D:qualifier-W (3 celle) family-D:qualifier-X (1 cella)
chiave di riga 2 family-D:qualifier-X (10 celle)
chiave di riga 3 family-D:qualifier-W (7 celle) family-D:qualifier-Y (6 celle)

Il numero di celle nella famiglia di colonne è 3 + 1 + 10 + 7 + 6 = 27. Questo valore diviso per 3 (il numero di righe) indica che la famiglia di colonne family-D ha una media di celle per colonna pari a 9.

Dati logici in byte (famiglia di colonne)

I dati logici in byte riflettono lo spazio non compresso occupato dalla famiglia di colonne. Questo valore corrisponde approssimativamente al numero di byte non compressi necessari per leggere tutti i dati nella famiglia di colonne al momento della restituzione delle statistiche della tabella. Come i byte logici a livello di tabella, questo valore non riflette i risparmi di spazio di archiviazione derivanti dalla compressione dei dati su disco.

Esempio di utilizzo di gcloud CLI

Per ottenere le statistiche di una tabella denominata sample-table, utilizza il comando bigtable instances table describe:

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID --view stats

Sostituisci quanto segue:

  • TABLE_ID: l'identificatore permanente della tabella
  • INSTANCE_ID: l'identificatore permanente dell'istanza

L'output è simile al seguente:

  columnFamilies:
    my-family:
     stats:
       averageCellsPerColumn: 12.34
       averageColumnsPerRow: 56.78
       logicalDataBytes: 314159
  name: projects/my-project/instances/INSTANCE_ID/tables/TABLE_ID
  stats:
    averageCellsPerColumn: 12.34
    averageColumnsPerRow: 56.78
    logicalDataBytes: 314159
    rowCount: 271828

Passaggi successivi