Partilhar via


ANALYZE TABLE

Aplica-se a:Indicação de Sim Databricks SQL Indicação de Sim Databricks Runtime

Use a ANALYZE TABLE declaração para:

  1. Calcular métricas de armazenamento sobre uma tabela específica, ou
  2. Recolha estatísticas estimadas sobre uma tabela específica ou todas as tabelas de um esquema especificado.

Executa COMPUTE STORAGE METRICS numa tabela para devolver o tamanho total de armazenamento.

Separadamente, as estatísticas estimadas são usadas pelo otimizador de consultas para gerar um plano de consulta ótimo. A otimização preditiva corre ANALYZE automaticamente em tabelas geridas pelo Unity Catalog para recolher esta informação. A Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas pelo Unity Catalog para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização preditiva para tabelas gerenciadas do Unity Catalog.

Sintaxe

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 ]

Parâmetros

  • table_name

    Identifica a tabela a ser analisada. O nome não deve incluir uma especificação temporal ou de opções ou um caminho. Se a tabela não puder ser encontrada, o Azure Databricks gerará um erro de TABLE_OR_VIEW_NOT_FOUND .

  • PARTITION cláusula

    Opcionalmente, limita o comando a um subconjunto de partições.

    Para tabelas Delta Lake, esta cláusula não é suportada.

  • DELTA

    Aplica-se a:assinalado com sim Databricks SQL assinalado com sim Databricks Runtime 14.3 LTS e superior

    Recalcula as estatísticas armazenadas no log Delta para as colunas configuradas para coleta de estatísticas em uma tabela Delta.

    Quando a DELTA palavra-chave é especificada, as estatísticas normais para o otimizador de consulta não são coletadas.

    O Databricks recomenda executar ANALYZE TABLE table_name COMPUTE DELTA STATISTICS depois de definir novas colunas para permitir o salto de dados, a fim de atualizar as estatísticas de todas as linhas de uma tabela. Para um desempenho otimizado, execute ANALYZE TABLE table_name COMPUTE STATISTICS para atualizar o plano de consulta após a conclusão da atualização do log Delta.

  • [ NOSCAN | PARA COLUMNS col [, ...] PARA TODOS COLUMNS ]

    Se nenhuma opção de análise for especificada, ANALYZE TABLE coletará o número de linhas e o tamanho da tabela em bytes.

    • NÃO SCANEAR

      Recolha apenas o tamanho da tabela em bytes (o que não exige varrer toda a tabela).

    • PARA COLUMNS col [, ...] PARA TODOS COLUMNS

      Colete estatísticas para cada coluna especificada ou, de forma alternativa, para todas as colunas, bem como estatísticas da tabela.

      As estatísticas de coluna não são suportadas em combinação com a cláusula PARTITION.

  • { DE | NO } schema_name

    Especifica o nome do esquema a ser analisado. Sem um nome de esquema, ANALYZE TABLES coleta todas as tabelas no esquema atual que o usuário atual tem permissão para analisar.

MÉTRICAS DE ARMAZENAMENTO EM COMPUTAÇÃO

Aplica-se a:marcado como sim Runtime Databricks 18.0 e superiores

O ANALYZE TABLE … COMPUTE STORAGE METRICS comando calcula métricas de tamanho total de armazenamento para uma tabela. Ao contrário de ANALYZE TABLE … COMPUTE STATISTICS, que otimiza o desempenho das consultas, este comando fornece uma divisão detalhada do armazenamento para análise e otimização de custos.

Description

Calcula métricas de tamanho total de armazenamento para uma tabela específica. Este comando devolve informações completas de armazenamento, incluindo bytes totais, bytes ativos, bytes que podem ser comprimidos e bytes de retrocesso no tempo, juntamente com o número de ficheiros associado para cada categoria.

Use este comando para identificar tabelas grandes ou não utilizadas, otimizar custos de armazenamento e compreender porque é que o tamanho total de armazenamento difere do tamanho da tabela ativa. Isto é particularmente útil para administradores de plataforma que precisam de analisar padrões de armazenamento em múltiplas tabelas ou acompanhar alterações de armazenamento ao longo do tempo.

Métricas de saída

O comando devolve as seguintes métricas numa única linha:

Campo Descrição
total_bytes Tamanho total de armazenamento para a tabela. Isto é igual a delta log + bytes ativos + bytes passíveis de limpeza + bytes de salto temporal.
total_num_files Número total de ficheiros, incluindo ficheiros de registo delta, ficheiros ativos, ficheiros aspiráveis e ficheiros de viagem no tempo.
active_bytes Tamanho dos ficheiros de dados referenciados ativamente pela tabela (igual a sizeInBytes).
num_active_files Número total de ficheiros referenciados ativamente pela tabela.
vacuumable_bytes Tamanho dos dados que podem ser removidos através da execução de VACUUM ou da ativação da otimização preditiva.
num_vacuumable_files Número de ficheiros elimináveis.
time_travel_bytes Tamanho dos dados históricos usados para rollbacks e operações de viagem no tempo . Também conhecidos como bytes com lapidação ou bytes de segurança.
num_time_travel_files Número de ficheiros utilizados para viagens no tempo.

Detalhes

  • O comando utiliza uma abordagem de lista recursiva para calcular a informação de armazenamento. O tempo de execução é tipicamente de poucos minutos, mas pode demorar até várias horas para tabelas muito grandes.
  • Este comando funciona tanto para tabelas geridas pelo Unity Catalog como para tabelas externas.
  • As métricas de armazenamento são calculadas no momento em que o comando é executado e não são armazenadas no Unity Catalog nem devolvidas por DESCRIBE EXTENDED.
  • Para acompanhar as alterações de armazenamento ao longo do tempo, execute este comando periodicamente e armazene os resultados numa tabela. Execute este comando num ciclo através de várias tabelas para analisar padrões de armazenamento em todo o seu património de dados.

Considerações sobre tipos de tabela

  • Visualizações materializadas e tabelas de streaming:total_bytes inclui o tamanho da tabela e os metadados associados. A active_bytes métrica exclui as porções da tabela aspiráveis e sujeitas a viagem no tempo.
  • Clones superficiais:total_bytes inclui apenas os próprios metadados do clone e ficheiros de registo delta, excluindo ficheiros da tabela de origem. active_bytes é igual a zero, pois o clone faz referência aos ficheiros de dados da tabela de origem.
  • Tabelas convertidas: Tabelas que foram recentemente convertidas de externas para geridas podem incluir dados tanto em locais geridos como externos. Por exemplo, os dados permanecem na localização externa durante a janela de rollback. Consulte Converter uma tabela externa em uma tabela gerenciada do Catálogo Unity.

Exemplos

Os exemplos seguintes demonstram como usar ANALYZE TABLE para calcular métricas de armazenamento e recolher estatísticas.

EXEMPLOS DE MÉTRICAS DE ARMAZENAMENTO COMPUTACIONAL

> 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

O resultado mostra:

  • Armazenamento total: 5,37 GB em 1.250 ficheiros
  • Dados ativos: 4,29 GB em 1.000 ficheiros (versão atual da tabela)
  • Dados aspiráveis: 805 MB em 150 ficheiros (podem ser recuperados com VACUUM)
  • Dados de viagem no tempo: 268 MB em 100 ficheiros (para consultas históricas)

EXEMPLOS DE ESTATÍSTICAS DE CÁLCULO

> 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;