

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
<a name="vacuum-statement"></a>

L’instruction `VACUUM` assure la maintenance des tables d’Apache Iceberg [en faisant expirer les instantanés](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) et [en supprimant les fichiers orphelins](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files).

**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](querying-iceberg-data-optimization.md). 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é
<a name="vacuum-statement-synopsis"></a>

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\$1INTERNAL\$1ERROR: 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
<a name="vacuum-statement-operations-performed"></a>

`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](querying-iceberg-alter-table-set-properties.md) 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](querying-iceberg-creating-tables.md) et [Gestion des tables Iceberg](querying-iceberg-managing-tables.md).