VACUUM
A instrução VACUUM
realiza a manutenção da tabela para as tabelas do Apache Iceberg ao realizar a expiração de snapshots
nota
VACUUM
é transacional e é compatível somente com tabelas do Apache Iceberg na versão 3 do mecanismo do Athena.
A instrução VACUUM
otimiza as tabelas do Iceberg ao reduzir o consumo de armazenamento. Para obter mais informações sobre o uso de VACUUM
, consulte Otimizar tabelas do Iceberg. Como a instrução VACUUM
faz chamadas de API para o Amazon S3, as cobranças se aplicam às solicitações associadas ao Amazon S3.
Atenção
Se você executar uma operação de expiração de snapshot, não poderá mais fazer viagens no tempo para snapshots expirados.
Resumo
Para remover os arquivos de dados que não são mais necessários para uma tabela do Iceberg, use a sintaxe a seguir.
VACUUM [database_name
.]target_table
-
O
VACUUM
espera que os dados do Iceberg estejam em uma pasta do Amazon S3 em vez de em um bucket do Amazon S3. Por exemplo, se seus dados do Iceberg estiverem ems3://amzn-s3-demo-bucket
/ em vez des3://amzn-s3-demo-bucket/myicebergfolder/
, a instruçãoVACUUM
falhará com a mensagem de erroGENERIC_INTERNAL_ERROR: Path missing in file system location:
.s3://amzn-s3-demo-bucket
-
Para que o
VACUUM
possa excluir arquivos de dados, sua função de execução de consulta deve ter as permissõess3:DeleteObject
no bucket em que suas tabelas, metadados, snapshots e arquivos de dados do Iceberg estão localizados. Se a permissão não estiver presente, a consulta deVACUUM
será bem-sucedida, mas os arquivos não serão excluídos. -
Para executar
VACUUM
em uma tabela com um nome que comece com um sublinhado (por exemplo,_mytable
), coloque o nome da tabela entre acentos maiúsculos, como no exemplo a seguir. Se você prefixar o nome da tabela com um nome de banco de dados, não coloque o nome do banco de dados entre aspas. Observe que aspas duplas não funcionarão no lugar dos acentos.Esse comportamento é específico do
VACUUM
. As instruçõesCREATE
eINSERT INTO
não exigem acentos graves para nomes de tabelas que começam com sublinhados.VACUUM `_mytable` VACUUM my_database.`_mytable`
Operações realizadas
VACUUM
realiza as seguintes operações:
-
Remove os snapshots que são mais antigos do que o tempo especificado pela propriedade de tabela
vacuum_max_snapshot_age_seconds
. Por padrão, essa propriedade é definida para 432 mil segundos (cinco dias). -
Remove os snapshots que não estão dentro do período de retenção e que excedem o número especificado pela propriedade de tabela
vacuum_min_snapshots_to_keep
. O padrão é um.É possível especificar essas propriedades de tabela em sua instrução
CREATE TABLE
. Após a criação da tabela, é possível usar a instrução ALTER TABLE SET TBLPROPERTIES para atualizá-la. -
Remove todos os metadados e os arquivos de dados inacessíveis como resultado da remoção do snapshot. Você pode configurar o número de arquivos de metadados antigos a serem retidos definindo a propriedade da tabela
vacuum_max_metadata_files_to_keep
. O valor padrão é 100. -
Remove arquivos órfãos que são mais antigos do que o tempo especificado na propriedade de tabela
vacuum_max_snapshot_age_seconds
. Arquivos órfãos corresponde a arquivos no diretório de dados da tabela que não fazem parte do estado da tabela.
Para obter mais informações sobre como criar e gerenciar tabelas do Apache Iceberg no Athena, consulte Criar tabelas do Iceberg e Gerenciar tabelas do Iceberg.