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'VACUUM
istruzione esegue la manutenzione delle tabelle su Apache Iceberg eseguendo la scadenza degli snapshot
Nota
L'istruzione VACUUM
è transazionale ed è supportata solo per le tabelle Apache Iceberg nella versione 3 del motore Athena.
L'VACUUM
istruzione 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'VACUUM
istruzione 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
-
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 ins3://amzn-s3-demo-bucket
/anziché ins3://amzn-s3-demo-bucket/myicebergfolder/
, l'VACUUM
istruzione ha esito negativo e viene visualizzato il messaggio di erroreGENERIC_ INTERNAL _ERROR: Path missing in file system location:
.s3://amzn-s3-demo-bucket
-
VACUUM
Per poter eliminare i file di dati, il ruolo di esecuzione delle query deve disporres3: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, laVACUUM
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
LeINSERT INTO
istruzioniCREATE
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.