Ottimizzazione delle tabelle Iceberg - 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à.

Ottimizzazione delle tabelle Iceberg

Man mano che i dati si accumulano in una tabella Iceberg, le query diventano gradualmente meno efficienti a causa del maggiore tempo di elaborazione richiesto per aprire i file. Se la tabella contiene file di eliminazione si verificano costi computazionali aggiuntivi. In Iceberg, i file eliminati archiviano le eliminazioni a livello di riga e il motore deve applicare le righe eliminate ai risultati della query.

Per ottimizzare le prestazioni delle query sulle tabelle Iceberg, Athena supporta la compattazione manuale come comando di manutenzione delle tabelle. Le compattazioni ottimizzano il layout strutturale della tabella senza alterare il contenuto della tabella.

OPTIMIZE

L'operazione di compattazione OPTIMIZE table REWRITE DATA riscrive i file di dati in un layout più ottimizzato in base alle dimensioni e al numero di file di eliminazione associati. Per i dettagli sulla sintassi e sulle proprietà della tabella, consulta la pagina OPTIMIZE.

Esempio

L'esempio seguente unisce i file di eliminazione in file di dati e produce file vicino alle dimensioni del file di destinazione dove il valore di category è c1.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM esegue la scadenza degli snapshot e la rimozione dei file orfani. Queste operazioni riducono le dimensioni dei metadati e rimuovono i file non nello stato corrente della tabella che sono anche più vecchi del periodo di conservazione specificato per la tabella. Per i dettagli sulla sintassi, consulta la pagina VACUUM.

Esempio

L'esempio seguente utilizza una proprietà della tabella per configurare la tabella iceberg_table in modo che mantenga i dati degli ultimi tre giorni, quindi utilizza VACUUM per far scadere i vecchi snapshot e rimuovere i file orfani dalla tabella.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table