VACUUM - Amazon Athena

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

L'VACUUMistruzione esegue la manutenzione delle tabelle su Apache Iceberg eseguendo la scadenza degli snapshot e la rimozione dei file orfani.

Nota

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

L'VACUUMistruzione ottimizza le tabelle Iceberg riducendo il consumo di storage. Per ulteriori informazioni sull'utilizzo di VACUUM, consultare Ottimizza le tabelle Iceberg. Tieni presente che, poiché l'VACUUMistruzione effettua API chiamate verso 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
  • VACUUMprevede 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 ins3://amzn-s3-demo-bucket/anziché ins3://amzn-s3-demo-bucket/myicebergfolder/, l'VACUUMistruzione ha esito negativo e viene visualizzato il messaggio di errore GENERIC_ INTERNAL _ERROR: Path missing in file system location:. s3://amzn-s3-demo-bucket

  • VACUUMPer poter eliminare i file di dati, il ruolo di esecuzione delle query deve disporre s3:DeleteObject delle autorizzazioni sul bucket in cui si trovano le tabelle, i metadati, le istantanee e i file di dati Iceberg. Se l'autorizzazione non è presente, la VACUUM query avrà esito positivo, ma i file non verranno eliminati.

  • Per eseguirla VACUUM su una tabella il cui nome inizia con un carattere di sottolineatura (ad esempio,_mytable), racchiudi il nome della tabella tra segni di spunta rovesciati, come nell'esempio seguente. Se anteponete al nome della tabella un nome di database, non racchiudete il nome del database tra i backtick. Nota che le virgolette doppie non funzioneranno al posto dei backtick.

    Questo comportamento è specifico di. VACUUM Le INSERT INTO istruzioni CREATE and non richiedono il backtick 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 Crea tabelle Iceberg e Gestisci le tabelle Iceberg.