VACUUM - Amazon Athena

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.