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’instruction VACUUM assure la maintenance des tables d’Apache Iceberg en faisant expirer 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.

L’instruction VACUUM optimise les tables Iceberg en réduisant la consommation de stockage. Pour plus d'informations sur l'utilisation de VACUUM, consultez Optimisation des tables Iceberg. Notez que, dans la mesure où l'instruction VACUUM envoie des appels d'API à Amazon S3, des frais s'appliquent pour les demandes associé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
  • VACUUM s’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 dans s3://amzn-s3-demo-bucket/ au lieu de s3://amzn-s3-demo-bucket/myicebergfolder/, l’instruction VACUUM échoue avec le message d’erreur GENERIC_INTERNAL_ERROR: Path missing in file system location: s3://amzn-s3-demo-bucket.

  • Pour que VACUUM puisse supprimer des fichiers de données, votre rôle d’exécution de requêtes doit disposer de l’autorisation s3:DeleteObject sur le compartiment contenant vos tables, métadonnées, instantanés et fichiers de données Iceberg. En l’absence de cette autorisation, la requête VACUUM aboutira, mais les fichiers ne seront pas supprimés.

  • Pour exécuter VACUUM sur une table dont le nom commence par un trait de soulignement (par exemple, _mytable), placez le nom de la table entre accents graves comme illustré dans l’exemple suivant. Si le nom de la table est précédé d’un nom de base de données, ne placez pas ce dernier entre accents graves. Notez que vous ne pouvez pas remplacer les accents graves par des guillemets doubles.

    Ce comportement est propre à VACUUM. Les instructions CREATE et INSERT INTO ne nécessitent pas que les noms de table commençant par un trait de soulignement soient placés entre accents graves.

    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 Gestion des tables Iceberg.