Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Databricks SQL
Databricks Runtime
Usare l'istruzione ANALYZE TABLE per:
- Calcolare le metriche di archiviazione relative a una tabella specifica o
- Raccogliere statistiche stimate su una tabella specifica o su tutte le tabelle in uno schema specificato.
Eseguire COMPUTE STORAGE METRICS in una tabella per restituire le dimensioni di archiviazione totali.
Separatamente, le statistiche stimate vengono usate da Query Optimizer per generare un piano di query ottimale. L'ottimizzazione predittiva viene eseguita ANALYZE automaticamente nelle tabelle gestite di Unity Catalog per raccogliere queste informazioni. Databricks consiglia di abilitare l'ottimizzazione predittiva per tutte le tabelle gestite di Unity Catalog per semplificare la manutenzione dei dati e ridurre i costi di archiviazione. Consulta Ottimizzazione predittiva per le tabelle gestite da Unity Catalog.
Sintassi
ANALYZE TABLE table_name COMPUTE STORAGE METRICS
ANALYZE TABLE table_name [ PARTITION clause ]
COMPUTE [ DELTA ] STATISTICS [ NOSCAN | FOR COLUMNS col1 [, ...] | FOR ALL COLUMNS ]
ANALYZE TABLES [ { FROM | IN } schema_name ] COMPUTE STATISTICS [ NOSCAN ]
Parametri
-
Identifica la tabella da analizzare. Il nome non deve includere una specifica temporale o una specifica delle opzioni o un percorso. Se la tabella non è stata trovata, Azure Databricks genera un errore di TABLE_OR_VIEW_NOT_FOUND.
-
Facoltativamente, limita il comando a un subset di partizioni.
Questa clausola non è supportata per le tabelle Delta Lake.
DELTASi applica a:
Databricks SQL
Databricks Runtime 14.3 LTS e versioni successiveRicompila le statistiche archiviate nel log Delta per le colonne configurate per la raccolta di statistiche in una tabella Delta.
Quando si specifica la
DELTAparola chiave , le statistiche normali per Query Optimizer non vengono raccolte.Databricks consiglia di eseguire
ANALYZE TABLE table_name COMPUTE DELTA STATISTICSdopo aver impostato nuove colonne per il salto dei dati, per aggiornare le statistiche di tutte le righe di una tabella. Per ottimizzare le prestazioni, eseguireANALYZE TABLE table_name COMPUTE STATISTICSper aggiornare il piano di query al termine dell'aggiornamento del log Delta.[ NOSCAN | FOR COLUMNS col [, ...] | PER TUTTI COLUMNS ]
Se non viene specificata alcuna opzione di analisi,
ANALYZE TABLEraccoglie il numero di righe e dimensioni della tabella in byte.NOSCAN
Raccogliere solo le dimensioni della tabella in byte (che non richiede l'analisi dell'intera tabella).
FOR COLUMNS col [, ...] | PER TUTTI COLUMNS
Raccogliere le statistiche delle colonne per ogni colonna specificata o in alternativa per ogni colonna, nonché le statistiche delle tabelle.
Le statistiche delle colonne non sono supportate in combinazione con la clausola
PARTITION.
{ FROM
|IN } schema_nameSpecifica il nome dello schema da analizzare. Senza un nome di schema,
ANALYZE TABLESraccoglie tutte le tabelle nello schema corrente a cui l'utente corrente ha l'autorizzazione per l'analisi.
METRICHE DI ARCHIVIAZIONE E DI CALCOLO
Si applica a:
Databricks Runtime 18.0 e versioni successive
Il ANALYZE TABLE … COMPUTE STORAGE METRICS comando calcola le metriche delle dimensioni di archiviazione totali per una tabella. A differenza del ANALYZE TABLE … COMPUTE STATISTICS fatto che ottimizza le prestazioni delle query, questo comando fornisce una suddivisione dettagliata dell'archiviazione per l'analisi e l'ottimizzazione dei costi.
Description
Calcola le metriche delle dimensioni di archiviazione totali per una tabella specifica. Questo comando restituisce informazioni complete sull'archiviazione, inclusi i byte totali, i byte attivi, i byte a vuoto e i byte di spostamento temporali, insieme al numero associato di file per ogni categoria.
Usare questo comando per identificare tabelle di grandi dimensioni o inutilizzate, ottimizzare i costi di archiviazione e comprendere perché le dimensioni di archiviazione totali differiscono dalle dimensioni della tabella attiva. Ciò è particolarmente utile per gli amministratori della piattaforma che devono analizzare i modelli di archiviazione in più tabelle o tenere traccia delle modifiche di archiviazione nel tempo.
Metriche di output
Il comando restituisce le metriche seguenti in una singola riga:
| Campo | Descrizione |
|---|---|
total_bytes |
Dimensione totale di archiviazione per la tabella. Ciò equivale alle dimensioni del log delle transazioni + byte attivi + byte sottovuoto + byte di spostamento temporale. |
num_total_files |
Numero totale di file, inclusi i file di log differenziali, i file attivi, i file eliminabili e i file per la navigazione temporale. |
active_bytes |
Dimensioni dei file di dati a cui fa attivamente riferimento la tabella (uguale a sizeInBytes). |
num_active_files |
Numero totale di file a cui fa attivamente riferimento la tabella. |
vacuumable_bytes |
Dimensioni dei dati che possono essere rimossi eseguendo VACUUM o abilitando l'ottimizzazione predittiva. |
num_vacuumable_files |
Numero di file pulibili. |
time_travel_bytes |
Dimensioni dei dati cronologici usati per i rollback e le operazioni di spostamento del tempo . Noto anche come byte segnaposto o byte di protezione. |
num_time_travel_files |
Numero di file utilizzati per il viaggio nel tempo. |
Dettagli
- Il comando usa un approccio di elenco ricorsivo per calcolare le informazioni di archiviazione. Il tempo di esecuzione è in genere in pochi minuti, ma può richiedere fino a diverse ore per tabelle molto grandi.
- Questo comando funziona sia per le tabelle gestite dal catalogo Unity che per le tabelle esterne.
- Le metriche di archiviazione vengono calcolate al momento dell'esecuzione del comando e non vengono archiviate nel catalogo unity o restituite da
DESCRIBE EXTENDED. - Per tenere traccia delle modifiche di archiviazione nel tempo, eseguire questo comando periodicamente e archiviare i risultati in una tabella. Eseguire questo comando in un ciclo tra più tabelle per analizzare i modelli di archiviazione nel patrimonio di dati.
Considerazioni sul tipo di tabella
-
Viste materializzate e tabelle di streaming:
total_bytesinclude le dimensioni della tabella e i metadati associati. Laactive_bytesmetrica esclude le parti a vuoto e a spostamento temporale della tabella. -
Cloni superficiali:
total_bytesincludono solo i metadati propri del clone e i file di log delta, escludendo i file di tabella di origine.active_bytesè uguale a zero perché il clone fa riferimento ai file di dati della tabella di origine. - Tabelle convertite: Le tabelle convertite di recente da esterne a gestite possono includere dati in posizioni gestite ed esterne. Ad esempio, i dati rimangono nella posizione esterna durante la finestra di rollback. Vedere Convertire una tabella esterna in una tabella del catalogo Unity gestita.
Esempi
Gli esempi seguenti illustrano come usare ANALYZE TABLE per calcolare le metriche di archiviazione e raccogliere statistiche.
ESEMPI DI METRICHE DI CALCOLO E ARCHIVIAZIONE
> ANALYZE TABLE main.my_schema.my_table COMPUTE STORAGE METRICS;
total_bytes total_num_files active_bytes num_active_files vacuumable_bytes num_vacuumable_files time_travel_bytes num_time_travel_files
----------- --------------- ------------ ---------------- ---------------- -------------------- ----------------- ---------------------
5368709120 1250 4294967296 1000 805306368 150 268435456 100
L'output mostra:
- Spazio di archiviazione totale: 5,37 GB tra 1.250 file
- Dati attivi: 4,29 GB in 1.000 file (versione della tabella corrente)
- Dati rimovibili: 805 MB in 150 file (possono essere liberati con VACUUM)
- Dati di viaggio nel tempo: 268 MB in 100 file (per le ricerche storiche)
Esempi di calcolo delle statistiche
> CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
> INSERT INTO students PARTITION (student_id = 111111) VALUES ('Mark');
> INSERT INTO students PARTITION (student_id = 222222) VALUES ('John');
> ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLE students COMPUTE STATISTICS;
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
-- Note: ANALYZE TABLE .. PARTITION is not supported for Delta tables.
> ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;
> DESC EXTENDED students PARTITION (student_id = 111111);
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Partition Statistics 432 bytes, 1 rows
... ... ...
OutputFormat org.apache.hadoop...
> ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;
> DESC EXTENDED students name;
info_name info_value
-------------- ----------
col_name name
data_type string
comment NULL
min NULL
max NULL
num_nulls 0
distinct_count 2
avg_col_len 4
max_col_len 4
histogram NULL
> ANALYZE TABLES IN school_schema COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes
... ... ...
> ANALYZE TABLES COMPUTE STATISTICS;
> DESC EXTENDED teachers;
col_name data_type comment
-------------------- -------------------- -------
name string null
teacher_id int null
... ... ...
Statistics 1382 bytes, 2 rows
... ... ...
> DESC EXTENDED students;
col_name data_type comment
-------------------- -------------------- -------
name string null
student_id int null
... ... ...
Statistics 864 bytes, 2 rows
... ... ...
> ANALYZE TABLE some_delta_table COMPUTE DELTA STATISTICS;