VACUUM
A instrução VACUUM
realiza a manutenção da tabela para as tabelas do Apache Iceberg ao remover os arquivos de dados que não são mais necessários.
nota
VACUUM
é transacional e é compatível somente com tabelas do Apache Iceberg na versão 3 do mecanismo do Athena.
A execução da instrução VACUUM
em tabelas do Iceberg é recomendada para remover arquivos de dados que não são mais relevantes e reduzir o tamanho dos metadados e o consumo de armazenamento. 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
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ções CREATE
e INSERT INTO
não exigem acentos graves para nomes de tabelas que começam com sublinhados.
VACUUM `_mytable` VACUUM my_database.`_mytable`
Observe também que 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 em s3://DOC-EXAMPLE-BUCKET
/ em vez de s3://DOC-EXAMPLE-BUCKET/myicebergfolder/
, a instrução VACUUM
falhará com a mensagem de erro GENERIC_INTERNAL_ERROR: Path missing in file system location:
.s3://DOC-EXAMPLE-BUCKET
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 PROPERTIES 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 Iceberg e Gerenciar tabelas Iceberg.