VACUUM - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

VACUUM

L'VACUUMinstruction effectue la maintenance des tables Apache Iceberg en expirant les instantanés et en supprimant les fichiers orphelins.

Note

VACUUM est transactionnel et n'est pris en charge que pour les tables Apache Iceberg dans la version 3 du moteur Athena.

Cette VACUUM déclaration optimise les tables Iceberg en réduisant la consommation de stockage. Pour plus d'informations sur l'utilisation de VACUUM, consultez Optimisez les tables Iceberg. Notez que, dans la mesure VACUUM où l'instruction API appelle Amazon S3, des frais s'appliquent pour les demandes associées adressées à Amazon S3.

Avertissement

Si vous exécutez une opération d'expiration des instantanés, vous ne pouvez plus parcourir le temps vers les instantanés expirés.

Résumé

Pour supprimer les fichiers de données qui ne sont plus nécessaires pour une table Iceberg, utilisez la syntaxe suivante.

VACUUM [database_name.]target_table
  • VACUUMs'attend à ce que les données Iceberg se trouvent dans un dossier Amazon S3 plutôt que dans un compartiment Amazon S3. Par exemple, si vos données Iceberg se trouvent às3://amzn-s3-demo-bucket/au lieu des3://amzn-s3-demo-bucket/myicebergfolder/, l'VACUUMinstruction échoue avec le message d'erreur GENERIC_ INTERNAL _ ERROR : Path missing in file system location : s3://amzn-s3-demo-bucket.

  • VACUUMPour pouvoir supprimer des fichiers de données, votre rôle d'exécution des requêtes doit disposer d's3:DeleteObjectautorisations sur le compartiment dans lequel se trouvent vos tables, métadonnées, instantanés et fichiers de données Iceberg. Si l'autorisation n'est pas présente, la VACUUM requête aboutira, mais les fichiers ne seront pas supprimés.

  • Pour exécuter une VACUUM opération sur une table dont le nom commence par un trait de soulignement (par exemple,_mytable), placez le nom de la table en backticks, comme dans l'exemple suivant. Si vous préfixez le nom de la table par un nom de base de données, ne le mettez pas entre crochets. Notez que les guillemets ne remplaceront pas les backticks.

    Ce comportement est propre àVACUUM. Les INSERT INTO instructions CREATE and ne nécessitent pas de cocher la case arrière pour les noms de table commençant par un trait de soulignement.

    VACUUM `_mytable` VACUUM my_database.`_mytable`

Opérations effectuées

VACUUM effectue les opérations suivantes :

  • Supprime les instantanés qui sont plus anciens que la période spécifiée par la propriété vacuum_max_snapshot_age_seconds de la table. Par défaut, cette propriété est définie sur 432 000 secondes (5 jours).

  • Supprime les instantanés qui ne sont pas dans la période de rétention et qui dépassent le nombre spécifié par la propriété vacuum_min_snapshots_to_keep de la table. La valeur par défaut est 1.

    Vous pouvez spécifier ces propriétés de table dans votre instruction CREATE TABLE. Une fois la table créée, vous pouvez utiliser l'instruction ALTER TABLE SET TBLPROPERTIES pour la mettre à jour.

  • Supprime tous les fichiers de métadonnées et de données qui sont inaccessibles à la suite de la suppression de l'instantané. Vous pouvez configurer le nombre d'anciens fichiers de métadonnées à conserver en définissant la propriété de table vacuum_max_metadata_files_to_keep. La valeur par défaut est 100.

  • Supprime les fichiers orphelins qui sont plus anciens que le temps spécifié dans la propriété vacuum_max_snapshot_age_seconds de la table. Les fichiers orphelins sont des fichiers dans le répertoire de données de la table qui ne font pas partie de l'état de la table.

Pour plus d'informations sur la création et la gestion de tables Apache Iceberg dans Athena, voir Création de tables Iceberg et Gérer les tables Iceberg.