Tablas delta de VACUUM

Use el comando Delta Lake VACUUM para quitar permanentemente los archivos de datos a los que ya no hace referencia una tabla Delta y que son anteriores al umbral de retención.

En Fabric, VACUUM te ayuda a limpiar archivos obsoletos en OneLake tras actualizaciones, eliminaciones, fusiones y operaciones de compactación. Reduce el consumo de almacenamiento, elimina los archivos obsoletos que Fabric ya no necesita para el estado activo de la tabla y recupera espacio después de operaciones de mantenimiento, como OPTIMIZE.

VACUUM sigue los mismos conceptos básicos de Delta Lake que quizá conozca de Delta Lake de código abierto, pero se ejecuta en experiencias de Fabric Spark, como cuadernos de notas, definiciones de trabajos de Spark y la interfaz de usuario de Lakehouse Maintenance.

Lo que VACUUM elimina

Una tabla Delta realiza un seguimiento de los archivos que componen el estado de la tabla actual en el registro delta. Cuando operaciones como UPDATE, DELETE, MERGE, las escrituras de sobrescritura o la compactación reemplazan archivos Parquet antiguos por otros más recientes, los archivos antiguos pueden quedar sin referencia.

VACUUM quita esos archivos sin referencia solo cuando ambas condiciones son verdaderas:

  • Los archivos ya no están referenciados por el registro Delta.
  • Los archivos son anteriores al umbral de retención configurado.

Dado que VACUUM elimina permanentemente los archivos de OneLake, úselo cuidadosamente cuando todavía necesite versiones anteriores de la tabla.

¿Por qué es importante VACUUM?

Ejecute VACUUM cuando desee:

  • Reducir el costo de almacenamiento mediante la eliminación de archivos obsoletos de OneLake
  • Recuperar espacio tras actualizaciones, eliminaciones y operaciones de fusión
  • Eliminar los archivos previos a la compactación después de que OPTIMIZE cree archivos sustitutivos
  • Evitar que las tablas de producción de larga ejecución acumulen archivos de datos innecesarios y obsoletos

VACUUM no mejora el rendimiento de las consultas por sí mismo de la misma manera que lo hacen las optimizaciones de compactación o diseño de archivos. Su propósito principal es la limpieza del almacenamiento.

Dónde ejecutar VACUUM

VACUUM es un comando de Spark en Fabric. Ejecútelo en lugares que usen el motor de Spark, como:

  • Cuadernos de notas de Fabric
  • Definiciones de trabajos de Spark
  • La interfaz de usuario de mantenimiento de Lakehouse y los flujos de trabajo de mantenimiento basados en canalizaciones

No lo VACUUM ejecutes en el endpoint de SQL Analytics ni en el editor SQL de almacén. Esas experiencias no son compatibles con los comandos de mantenimiento de Spark Delta.

Si desea un flujo de trabajo basado en el portal, consulte Mantenimiento de tablas de Lakehouse.

Note

En los cuadernos, ejecute los ejemplos de SQL en una celda de Spark SQL, los ejemplos de Python en una celda de PySpark y los ejemplos de Scala en una celda de Scala.

Ejemplos de sintaxis

Use los ejemplos siguientes al ejecutar VACUUM en Fabric.

Ejecutar VACUUM en una tabla con la configuración de retención predeterminada

VACUUM schema_name.table_name

Vacío de una tabla con un umbral de retención personalizado

VACUUM schema_name.table_name RETAIN 168 HOURS

Vista previa de archivos con DRY RUN

Use DRY RUN para enumerar los archivos que se eliminarían sin eliminarlos realmente.

VACUUM schema_name.table_name DRY RUN

También puede combinar RETAIN y DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Vacío en modo LITE

VACUUM LITE es una alternativa más rápida que usa solo el registro de transacciones Delta para identificar archivos sin referencia, en lugar de enumerar todos los archivos del directorio de tabla. Este enfoque es significativamente más rápido para tablas grandes con muchos archivos.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identifica los archivos que se van a quitar leyendo el registro delta en lugar de realizar una lista completa de directorios. Es más rápido, pero requiere suficiente historial de registros para determinar qué archivos no tienen referencia. Si el registro de Delta se ha depurado más allá de lo que necesita el modo LITE, se produce una excepción DELTA_CANNOT_VACUUM_LITE; en ese caso, se debe volver al VACUUM estándar (modo completo).

Note

VACUUM LITE se admite en Fabric spark runtime 2.0 (Delta 4.1) o posterior. Compruebe que la versión del entorno de ejecución de Fabric admite esta característica.

Vaciar una tabla de inventario

En el caso de tablas muy grandes en las que incluso la lista de directorios completa predeterminada VACUUM es lenta, puede proporcionar un inventario predefinido de archivos. En lugar de enumerar el directorio de la tabla en tiempo de ejecución, VACUUM lee las rutas de archivo del inventario que proporciones.

VACUUM schema_name.table_name USING INVENTORY inventory_table_name

VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')

La tabla de inventario (o consulta) debe tener el esquema siguiente:

Columna Tipo Description
path string URI de fichero completamente cualificado.
length entero Tamaño de archivo en bytes.
isDir boolean Si la entrada es un directorio.
modificationTime entero Hora de última modificación del archivo en milisegundos desde la época.

Puede rellenar una tabla de inventario a partir de metadatos de archivos de OneLake, informes de inventario de cuentas de almacenamiento o un trabajo personalizado de Spark que liste el directorio de la tabla de forma programada. Esto desacopla el costoso paso de enumeración de archivos de la propia operación VACUUM.

Período de retención predeterminado

Si no especifica un intervalo de retención, VACUUM usa el período de retención predeterminado de siete días, que es 168 horas.

Ese valor predeterminado ofrece a los lectores activos, escritores activos y consultas de viaje en el tiempo un mayor margen de seguridad antes de que se eliminen los archivos más antiguos.

Comprobación de seguridad para períodos de retención cortos

Delta Lake incluye una comprobación de seguridad de retención controlada por spark.databricks.delta.retentionDurationCheck.enabled.

Si intenta usar un período de retención inferior a siete días, esta comprobación de seguridad le advierte a menos que deshabilite explícitamente la comprobación en la configuración de Spark.

Tenga precaución adicional antes de deshabilitar esta protección. Una ventana de retención corta puede quitar archivos que todavía necesitan cargas de trabajo simultáneas o escenarios de recuperación.

Por ejemplo, estos comandos solicitan un período de retención de un día:

VACUUM schema_name.table_name RETAIN 24 HOURS

Si su entorno mantiene habilitada la comprobación de seguridad, el entorno de ejecución advierte de configuraciones de retención inferiores a siete días.

Comprender el impacto en el viaje en el tiempo

El viaje en tiempo de Delta Lake le permite consultar versiones de tabla anteriores siempre que los archivos históricos necesarios sigan existiendo.

VACUUM quita los archivos anteriores a la ventana de retención, por lo que también quita los archivos de datos necesarios para el viaje de tiempo más allá de esa ventana. Una vez vacíos esos archivos, ya no se pueden consultar esas versiones anteriores.

Antes de reducir la retención, decida cuánto acceso histórico requieren las cargas de trabajo, las auditorías, los pasos de depuración y los procesos de recuperación. Para obtener más información, consulte Viaje en tiempo.

Descripción del impacto en los vectores de eliminación

Los vectores de eliminación pueden marcar filas como eliminadas sin volver a escribir inmediatamente todos los archivos de datos afectados. Debido a ese comportamiento, los archivos que parecen antiguos podrían seguir formando parte del estado de la tabla activa.

VACUUM no quita los archivos a los que todavía se hace referencia, incluidos los archivos que siguen siendo válidos porque los metadatos vectoriales de eliminación siguen apuntando a ellos. Si usa vectores de eliminación y más adelante reorganiza o optimiza la tabla, es posible que más archivos obsoletos sean aptos para VACUUM después de que se completen esos cambios.

Para reescribir físicamente los datos afectados por los vectores de eliminación, consulte Tablas delta de REORG.

Siga los procedimientos recomendados

Use estos procedimientos al ejecutar VACUUM en Fabric:

  • Ejecute VACUUM después OPTIMIZE para quitar los archivos de compactación previa que ya no son necesarios.
  • No establezca la retención por debajo de siete días a menos que comprenda claramente el efecto en el viaje en el tiempo, los lectores, los escritores y la recuperación.
  • Programe operaciones periódicas de VACUUM en las canalizaciones de producción para que los archivos obsoletos no se acumulen en OneLake.
  • Decidir las necesidades de viaje en el tiempo antes de reducir el período de retención.
  • Use DRY RUN primero cuando quiera comprobar qué archivos están a punto de quitarse.

Para obtener información sobre la guía de mantenimiento para todo Fabric, consulte Table maintenance overview y Lakehouse table maintenance.

Comprender lo que VACUUM no quita

VACUUM quita los archivos de datos obsoletos, pero no elimina los archivos de registro delta de la _delta_log carpeta.

La limpieza del registro de Delta sigue el comportamiento de los puntos de control y de la retención de registros, que es independiente de VACUUM.