Compartir a través de


ANALYZE TABLE

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Utilice la ANALYZE TABLE instrucción para:

  1. Calcular métricas de almacenamiento sobre una tabla específica o
  2. Recopile estadísticas estimadas sobre una tabla específica o todas las tablas de un esquema especificado.

Ejecute COMPUTE STORAGE METRICS en una tabla para devolver el tamaño total de almacenamiento.

Por separado, el optimizador de consultas usa estadísticas estimadas para generar un plan de consulta óptimo. La optimización predictiva se ejecuta ANALYZE automáticamente en tablas administradas por el catálogo de Unity para recopilar esta información. Databricks recomienda habilitar la optimización predictiva para todas las tablas administradas de Unity Catalog para simplificar el mantenimiento de datos y reducir los costos de almacenamiento. Consulte Optimización predictiva para tablas administradas de Unity Catalog.

Sintaxis

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 la tabla que se va a analizar. El nombre no debe incluir una especificación temporal ni una especificación o ruta de acceso. Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

  • PARTITION (cláusula)

    Puede limitar el comando a un subconjunto de particiones.

    Esta cláusula no es compatible con tablas de Delta Lake.

  • DELTA

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 14.3 LTS y versiones posteriores

    Vuelve a calcular las estadísticas almacenadas en el registro Delta para las columnas configuradas para la recopilación de estadísticas en una tabla Delta.

    Cuando se especifica la palabra clave DELTA, no se recopilan estadísticas normales del optimizador de consultas.

    Databricks recomienda ejecutar ANALYZE TABLE table_name COMPUTE DELTA STATISTICS después de configurar nuevas columnas a fin de omitir datos para actualizar las estadísticas de todas las filas de una tabla. Para optimizar el rendimiento, ejecute ANALYZE TABLE table_name COMPUTE STATISTICS a fin de actualizar el plan de consulta una vez completada la actualización del registro Delta.

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

    Si no se especifica ninguna opción de análisis, ANALYZE TABLE recopila el número de filas y el tamaño de la tabla en bytes.

    • NOSCAN

      Recopile solo el tamaño de la tabla en bytes (que no requiere examinar toda la tabla).

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

      Recopila estadísticas de columna para cada columna especificada o, como alternativa, para cada columna, así como estadísticas de tabla.

      Las estadísticas de columna no se admiten en combinación con la cláusula PARTITION.

  • { FROM | IN } schema_name

    Especifica el nombre del esquema que se va a analizar. Sin un nombre de esquema, ANALYZE TABLES recopila todas las tablas del esquema actual para el que el usuario actual tiene permiso de analizar.

MÉTRICAS PARA CÁLCULO DE ALMACENAMIENTO

Se aplica a:marcado como sí Databricks Runtime 18.0 y versiones posteriores

El ANALYZE TABLE … COMPUTE STORAGE METRICS comando calcula las métricas de tamaño de almacenamiento total de una tabla. A diferencia de ANALYZE TABLE … COMPUTE STATISTICS lo que optimiza el rendimiento de las consultas, este comando proporciona un desglose detallado del almacenamiento para el análisis y la optimización de costos.

Description

Calcula las métricas de tamaño de almacenamiento total para una tabla específica. Este comando devuelve información de almacenamiento completa, incluidos bytes totales, bytes activos, bytes vacíos y bytes de desplazamiento de tiempo, junto con el número asociado de archivos para cada categoría.

Use este comando para identificar tablas grandes o sin usar, optimizar los costos de almacenamiento y comprender por qué el tamaño total de almacenamiento difiere del tamaño de tabla activo. Esto es especialmente útil para los administradores de plataformas que necesitan analizar patrones de almacenamiento en varias tablas o realizar un seguimiento de los cambios de almacenamiento a lo largo del tiempo.

Métricas de salida

El comando devuelve las siguientes métricas en una sola fila:

Campo Descripción
total_bytes Tamaño total de almacenamiento de la tabla. Esto equivale al tamaño del registro delta + bytes activos + bytes aspirables + bytes de viaje en el tiempo.
total_num_files Número total de archivos, incluidos archivos de registro delta, archivos activos, archivos limpiables y archivos de viaje en el tiempo.
active_bytes Tamaño de los archivos de datos a los que hace referencia activamente la tabla (igual que sizeInBytes).
num_active_files Número total de archivos a los que hace referencia activamente la tabla.
vacuumable_bytes Tamaño de los datos que se pueden quitar mediante la ejecución de VACUUM o habilitando la optimización predictiva.
num_vacuumable_files Número de archivos aspirables.
time_travel_bytes El tamaño de los datos históricos usados para reversiones y operaciones de viaje en el tiempo. También conocido como bytes de lápida o bytes a prueba de fallos.
num_time_travel_files Número de archivos usados para el viaje en el tiempo.

Detalles

  • El comando usa un enfoque de lista recursiva para calcular la información de almacenamiento. El tiempo de ejecución suele estar en cuestión de minutos, pero puede tardar hasta varias horas en tablas muy grandes.
  • Este comando funciona tanto para tablas gestionadas por el catálogo de Unity como para tablas externas.
  • Las métricas de almacenamiento se calculan en el momento en que se ejecuta el comando y no se almacenan en el catálogo de Unity ni se devuelven mediante DESCRIBE EXTENDED.
  • Para realizar un seguimiento de los cambios de almacenamiento a lo largo del tiempo, ejecute este comando periódicamente y almacene los resultados en una tabla. Ejecute este comando en un bucle entre varias tablas para analizar los patrones de almacenamiento en todo el patrimonio de datos.

Consideraciones sobre el tipo de tabla

  • Vistas materializadas y tablas de streaming:total_bytes incluye el tamaño de la tabla y los metadatos asociados. La active_bytes métrica excluye las partes que se pueden recorrer en vacío y en el tiempo de la tabla.
  • Clones superficiales:total_bytes incluye solo los propios metadatos del clon y los archivos de registro delta, excluyendo los archivos de tabla de origen. active_bytes es igual a cero, ya que el clon hace referencia a los archivos de datos de la tabla de origen.
  • Tablas convertidas: Las tablas que se han convertido recientemente de externas a administradas pueden incluir datos en ubicaciones administradas y externas. Por ejemplo, los datos permanecen en la ubicación externa durante la ventana de reversión. Consulte Conversión de una tabla externa en una tabla de catálogo de Unity administrada.

Ejemplos

En los ejemplos siguientes se muestra cómo usar ANALYZE TABLE para calcular las métricas de almacenamiento y recopilar estadísticas.

Ejemplos de MÉTRICAS DE ALMACENAMIENTO DE COMPUTACIÓN

> 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

La salida muestra:

  • Almacenamiento total: 5,37 GB en 1250 archivos
  • Datos activos: 4,29 GB en 1000 archivos (versión de tabla actual)
  • Datos liberables: 805 MB en 150 archivos (se pueden reclamar con VACUUM)
  • Datos de viaje en tiempo: 268 MB en 100 archivos (para consultas históricas)

Ejemplos de cálculo de estadísticas

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