VACUUM
La instrucción VACUUM
realiza el mantenimiento de las tablas de Apache Iceberg al ocuparse del vencimiento de las instantáneas
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 ens3://amzn-s3-demo-bucket
/ en lugar des3://amzn-s3-demo-bucket/myicebergfolder/
, la instrucciónVACUUM
falla con el mensaje de errorGENERIC_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 teners3: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 consultaVACUUM
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 instruccionesCREATE
yINSERT 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.