Condividi tramite


ANALYZE TABLE

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Usare l'istruzione ANALYZE TABLE per:

  1. Calcolare le metriche di archiviazione relative a una tabella specifica o
  2. 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

  • table_name

    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.

  • PARTITION clausola

    Facoltativamente, limita il comando a un subset di partizioni.

    Questa clausola non è supportata per le tabelle Delta Lake.

  • DELTA

    Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 14.3 LTS e versioni successive

    Ricompila le statistiche archiviate nel log Delta per le colonne configurate per la raccolta di statistiche in una tabella Delta.

    Quando si specifica la DELTA parola chiave , le statistiche normali per Query Optimizer non vengono raccolte.

    Databricks consiglia di eseguire ANALYZE TABLE table_name COMPUTE DELTA STATISTICS dopo aver impostato nuove colonne per il salto dei dati, per aggiornare le statistiche di tutte le righe di una tabella. Per ottimizzare le prestazioni, eseguire ANALYZE TABLE table_name COMPUTE STATISTICS per 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 TABLE raccoglie 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_name

    Specifica il nome dello schema da analizzare. Senza un nome di schema, ANALYZE TABLES raccoglie 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:check contrassegnato come sì 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_bytes include le dimensioni della tabella e i metadati associati. La active_bytes metrica esclude le parti a vuoto e a spostamento temporale della tabella.
  • Cloni superficiali:total_bytes includono 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;