VACUUM - Amazon Athena

VACUUM

La instrucción VACUUM realiza el mantenimiento de las tablas de Apache Iceberg al ocuparse del vencimiento de las instantáneas y la eliminación de los archivos huérfanos.

nota

VACUUM es transaccional y solo es compatible con las tablas de Apache Iceberg en la versión 3 del motor Athena.

La instrucción VACUUM optimiza las tablas de Iceberg al reducir el consumo de almacenamiento. Para obtener más información acerca del uso de VACUUM, consulte Optimización de las tablas de Iceberg. Tenga en cuenta que, debido a que la instrucción VACUUM realiza llamadas de API a Amazon S3, se aplican cargos por las solicitudes asociadas a Amazon S3.

aviso

Si ejecuta una operación de vencimiento de instantáneas, ya no podrá viajar en el tiempo a instantáneas vencidas.

Sinopsis

Para eliminar los archivos de datos que ya no se necesitan para una tabla de Iceberg, use la siguiente sintaxis.

VACUUM [database_name.]target_table
  • Tenga en cuenta que VACUUM espera que los datos de Iceberg estén en una carpeta de Amazon S3 en lugar de estar en un bucket de Amazon S3. Por ejemplo, si los datos de Iceberg se encuentran en s3://amzn-s3-demo-bucket/ en lugar de s3://amzn-s3-demo-bucket/myicebergfolder/, la instrucción VACUUM falla con el mensaje de error GENERIC_INTERNAL_ERROR: Falta la ruta en la ubicación del sistema de archivos: s3://amzn-s3-demo-bucket.

  • Para que VACUUM pueda eliminar archivos de datos, su función de ejecución de consultas debe tener s3:DeleteObject permisos en el bucket en el que se encuentran las tablas, los metadatos, las instantáneas y los archivos de datos de Iceberg. Si el permiso no está presente, la consulta VACUUM se realizará correctamente, pero los archivos no se eliminarán.

  • Para ejecutar VACUUM en una tabla cuyo nombre comience con un guión bajo (por ejemplo, _mytable), encierre el nombre de la tabla entre comillas inversas, como en el siguiente ejemplo. Si antepone al nombre de la tabla un nombre de base de datos, no encierre el nombre de la base de datos entre comillas inversas. Tenga en cuenta que las comillas dobles no funcionarán en lugar de las comillas inversas.

    Este comportamiento es específico de VACUUM. Las instrucciones CREATE y INSERT INTO no requieren comillas inversas para los nombres de tabla que comienzan con guiones bajos.

    VACUUM `_mytable` VACUUM my_database.`_mytable`

Operaciones realizadas

VACUUM lleva a cabo las siguientes operaciones:

  • Elimina las instantáneas que tengan una antigüedad superior a la cantidad de tiempo especificada en la propiedad de la tabla vacuum_max_snapshot_age_seconds. De forma predeterminada, esta propiedad se establece en 432 000 segundos (5 días).

  • Elimina las instantáneas que no estén dentro del periodo de conservación y que superen el número especificado en la propiedad de la tabla vacuum_min_snapshots_to_keep. El valor predeterminado de es 1.

    Puede especificar estas propiedades de la tabla en su instrucción CREATE TABLE. Después de crear la tabla, se puede usar la instrucción ALTER TABLE SET TBLPROPERTIES para actualizarla.

  • Elimina los metadatos y los archivos de datos a los que no se pueda acceder como resultado de la eliminación de la instantánea. Puede configurar la cantidad de archivos de metadatos antiguos que se van a retener al configurar la propiedad de la tabla vacuum_max_metadata_files_to_keep. El valor predeterminado es 100.

  • Elimina los archivos huérfanos que tienen una antigüedad superior al tiempo especificado en la propiedad de la tabla vacuum_max_snapshot_age_seconds. Los archivos huérfanos son archivos del directorio de datos de la tabla que no forman parte del estado de la tabla.

Para obtener más información acerca de la creación y administración de tablas de Apache Iceberg en Athena, consulte Creación de tablas de Iceberg y Administración de tablas de Iceberg.