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
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
-
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 danss3://amzn-s3-demo-bucket/ au lieu des3://amzn-s3-demo-bucket/myicebergfolder/, l’instructionVACUUMéchoue avec le message d’erreurGENERIC_INTERNAL_ERROR: Path missing in file system location:.s3://amzn-s3-demo-bucket -
Pour que
VACUUMpuisse supprimer des fichiers de données, votre rôle d’exécution de requêtes doit disposer de l’autorisations3:DeleteObjectsur le compartiment contenant vos tables, métadonnées, instantanés et fichiers de données Iceberg. En l’absence de cette autorisation, la requêteVACUUMaboutira, mais les fichiers ne seront pas supprimés. -
Pour exécuter
VACUUMsur 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 instructionsCREATEetINSERT INTOne 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_secondsde 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_keepde 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_secondsde 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.