Compartir a través de


VACUUM

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

Quite los archivos sin usar de un directorio de tabla.

Nota:

Este comando funciona de forma diferente en función de si trabaja en una tabla de Delta o de Apache Spark.

Vaciado de una tabla delta

Vaciado recurrente de directorios asociados a la tabla Delta. Para obtener detalles completos y limitaciones, consulte Eliminación de archivos de datos sin usar con vacío.

VACUUM quita todos los archivos del directorio de tabla que no están administrados por Delta, así como los archivos de datos que ya no están en el estado más reciente del registro de transacciones de la tabla y son anteriores a un umbral de retención. VACUUMomitirá todos los directorios que comienzan por un carácter de subrayado (_), que incluye _delta_log. La creación de particiones de la tabla en una columna que comienza con un carácter de subrayado es una excepción a esta regla; VACUUM examina todas las particiones válidas incluidas en la tabla Delta de destino. Los archivos se eliminan según el momento en que se hayan quitado lógicamente del registro de transacciones y las horas de retención de Delta, no de sus marcas de tiempo de modificación en el sistema de almacenamiento. El umbral predeterminado es de 7 días.

En las tablas de Delta, Azure Databricks no desencadena automáticamente operaciones VACUUM.

Si se ejecuta VACUUM en una tabla de Delta, se pierde la capacidad de retroceder en el tiempo a una versión anterior al período de retención de datos especificado.

Advertencia

Se recomienda establecer un intervalo de retención de al menos siete días, ya que es posible que todavía se usen instantáneas antiguas y archivos sin confirmar en operaciones de lectura o escritura simultáneas en la tabla. Si VACUUM limpia los archivos activos, las operaciones de lectura simultáneas pueden producir un error o, lo que es peor, las tablas pueden resultar dañadas cuando VACUUM elimina archivos que todavía no se han confirmado. Debe elegir un intervalo que sea más largo que la transacción simultánea de ejecución más prolongada y el período de mayor retraso de una secuencia con respecto a la actualización más reciente de la tabla.

Delta Lake tiene una comprobación de seguridad para evitar que ejecute un comando VACUUM peligroso. En Databricks Runtime, si está seguro de que en esta tabla no se realiza ninguna operación que tarde más tiempo que el intervalo de retención que planea especificar, puede desactivar esta comprobación de seguridad estableciendo la propiedad de configuración de Spark spark.databricks.delta.retentionDurationCheck.enabled en false.

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

Importante

La ventana de retención del comando VACUUM viene determinada por la delta.deletedFileRetentionDuration propiedad table, que tiene como valor predeterminado 7 días. Esto significa que VACUUM quita los archivos de datos a los que ya no ha hecho referencia una versión de la tabla Delta en los últimos 7 días. Si desea conservar los datos durante más tiempo (por ejemplo, para admitir el viaje de tiempo durante más tiempo), debe establecer esta propiedad de tabla en un valor mayor. En el ejemplo siguiente se muestra cómo establecer este umbral en 30 días:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Parámetros

  • table_name

    Identifica una tabla de Delta existente. El nombre no debe incluir una especificación temporal ni una especificación de opciones.

  • RETAIN num HOURS

    Umbral de retención.

  • DRY RUN

    Devuelve una lista de hasta 1000 archivos que se van a eliminar.

Vaciado de una tabla no delta

Se vacían de forma recursiva los directorios asociados a la tabla no delta y se quitan los archivos no confirmados anteriores a un umbral de retención. El umbral predeterminado es de 7 días.

En las tablas de no Delta, Azure Databricks desencadena automáticamente operaciones VACUUM a medida que se escriben los datos.

Sintaxis

VACUUM table_name [RETAIN num HOURS]

Parámetros

  • table_name

    Identifica una tabla existente por nombre o ruta.

  • RETAIN num HOURS

    Umbral de retención.