VACUUM - Amazon Athena

VACUUM

L'istruzione VACUUM esegue la manutenzione delle tabelle Apache Iceberg eseguendo la scadenza degli snapshot e la rimozione di file orfani.

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. 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

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é ins3://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

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 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 e Gestione di tabelle Iceberg.