VACUUM
Se aplica a: Databricks SQL 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. VACUUM
omitirá 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
-
Identifica una tabla de Delta existente. El nombre no debe incluir una especificación temporal.
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
-
Identifica una tabla existente por nombre o ruta.
RETAIN num HOURS
Umbral de retención.