

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# VACUUM
<a name="vacuum-statement"></a>

L’istruzione `VACUUM` esegue la manutenzione delle tabelle Apache Iceberg eseguendo la [scadenza degli snapshot](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) e la [rimozione di file orfani](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files).

**Nota**  
L'istruzione `VACUUM` è transazionale ed è supportata solo per le tabelle Apache Iceberg nella versione 3 del motore Athena.

L’istruzione `VACUUM` ottimizza le tabelle Iceberg riducendo il consumo di storage. Per ulteriori informazioni sull’utilizzo di `VACUUM`, consultare [Ottimizzare le tabelle Iceberg](querying-iceberg-data-optimization.md). Tieni presente che, poiché l'istruzione `VACUUM` effettua chiamate API ad Amazon S3, vengono addebitati costi per le richieste associate ad Amazon S3.

**avvertimento**  
Se si esegue un'operazione di scadenza delle snapshot, non è più possibile accedere alle snapshot scadute.

## Riepilogo
<a name="vacuum-statement-synopsis"></a>

Per rimuovere i file di dati non più necessari per una tabella Iceberg, utilizza la sintassi seguente.

```
VACUUM [{{database_name}}.]{{target_table}}
```
+ `VACUUM` prevede che i dati Iceberg si trovino in una cartella Amazon S3 anziché in un bucket Amazon S3. Ad esempio, se i dati di Iceberg si trovano in `s3://amzn-s3-demo-bucket`/anziché in`s3://amzn-s3-demo-bucket/myicebergfolder/`, l’istruzione `VACUUM` ha esito negativo e viene visualizzato il messaggio di errore GENERIC\_INTERNAL\_ERROR: Path missing in file system location: `s3://amzn-s3-demo-bucket`.
+ Affinché `VACUUM` possa eliminare i file di dati, il ruolo di esecuzione delle query deve disporre delle autorizzazioni `s3:DeleteObject` sul bucket in cui si trovano le tabelle, i metadati, le istantanee e i file di dati Iceberg. Se l’autorizzazione non è presente, la query `VACUUM` avrà esito positivo, ma i file non verranno eliminati. 
+ Per eseguire `VACUUM` su una tabella il cui nome inizia con un carattere di sottolineatura (ad esempio, `_mytable`), racchiudere il nome della tabella tra segni di spunta rovesciati, come nell’esempio seguente. Se si antepone un nome di database al nome della tabella, non racchiudere il nome del database tra segni di spunta rovesciati. Nota che le virgolette doppie non funzioneranno al posto dei segni di spunta rovesciati. 

  Questo comportamento è specifico di `VACUUM`. Le istruzioni `CREATE` e `INSERT INTO` non richiedono il segno di spunta rovesciato per i nomi di tabella che iniziano con caratteri di sottolineatura.

  ```
  VACUUM `_mytable`
  VACUUM my_database.`_mytable`
  ```

## Operazioni eseguite
<a name="vacuum-statement-operations-performed"></a>

`VACUUM` esegue le seguenti operazioni:
+ Rimuove gli snapshot che sono più vecchi del periodo di tempo specificato dalla proprietà della tabella `vacuum_max_snapshot_age_seconds`. Per impostazione predefinita, questa proprietà è impostata su 432.000 secondi (5 giorni).
+ Rimuove gli snapshot che non rientrano nel periodo da mantenere e che superano il numero specificato dalla proprietà della tabella `vacuum_min_snapshots_to_keep`. Il valore di default è 1.

  Puoi specificare queste proprietà della tabella nell'istruzione `CREATE TABLE`. Dopo aver creato la tabella, puoi utilizzare l'istruzione [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) per aggiornarle. 
+ Rimuove tutti i metadati e i file di dati che non sono raggiungibili a seguito della rimozione dello snapshot. Puoi configurare il numero di vecchi file di metadati da conservare impostando la proprietà della tabella `vacuum_max_metadata_files_to_keep`. Il valore predefinito è 100.
+ Rimuove i file orfani più vecchi del tempo specificato nella proprietà della tabella `vacuum_max_snapshot_age_seconds`. I file orfani sono file nella directory dei dati della tabella che non fanno parte dello stato della tabella.

Per ulteriori informazioni sulla creazione e sulla gestione delle tabelle Apache Iceberg in Athena, consulta le sezioni [Creazione di una tabella Iceberg](querying-iceberg-creating-tables.md) e [Gestione di tabelle Iceberg](querying-iceberg-managing-tables.md).