Compartilhar via


VACUUM

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Remova arquivos não utilizados de um diretório de tabela.

Observação

Esse comando funciona de forma diferente, dependendo se você está trabalhando em uma tabela Delta ou Apache Spark.

Executar vácuo em uma tabela Delta

Diretórios de vácuo recursivamente associados à tabela Delta. Para obter detalhes e limitações completos, consulte Remover arquivos de dados não utilizados com vácuo.

VACUUM remove todos os arquivos do diretório de tabela que não são gerenciados pela Delta, bem como arquivos de dados que não estão mais no estado mais recente do log de transações da tabela e são mais antigos que um limite de retenção. VACUUM ignorará todos os diretórios que começam com um sublinhado (_), o que inclui o _delta_log. Particionar sua tabela em uma coluna que começa com um sublinhado é uma exceção a essa regra; VACUUM verifica todas as partições válidas incluídas na tabela Delta de destino. Os arquivos da tabela Delta são excluídos de acordo com a hora em que foram removidos logicamente do log de transações do Delta mais as horas de retenção, e não de acordo com os carimbos de data/hora de modificação no sistema de armazenamento. O limite padrão é sete dias.

Em tabelas Delta, o Azure Databricks não dispara operações VACUUM automaticamente.

Se você executar VACUUM em uma tabela Delta, perderá a capacidade de voltar para uma versão anterior ao período de retenção de dados especificado.

Aviso

É recomendável que você defina um intervalo de retenção de pelo menos 7 dias, porque instantâneos antigos e arquivos não confirmados ainda podem estar em uso por leitores ou gravadores simultâneos. Se VACUUM limpa arquivos ativos, os leitores simultâneos podem experimentar falhas ou, pior, as tabelas podem ser corrompidas quando VACUUM exclui arquivos que ainda não foram confirmados. Você deve escolher um intervalo maior do que a transação simultânea em execução mais longa, e o período mais longo que os fluxos de dados podem ficar atrasados em relação à atualização mais recente da tabela.

O Delta Lake tem uma verificação de segurança para impedir que você execute um comando perigoso VACUUM. No Databricks Runtime, se você tiver certeza de que nenhuma operação em execução nessa tabela demorará mais do que o intervalo de retenção que você planeja especificar, desative essa verificação de segurança definindo a propriedade spark.databricks.delta.retentionDurationCheck.enabled da configuração do Spark como false.

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

Importante

A janela de retenção para o comando VACUUM é determinada pela delta.deletedFileRetentionDuration propriedade table, cujo padrão é 7 dias. Isso significa que VACUUM remove os arquivos de dados que não são mais referenciados por uma versão da tabela Delta nos últimos 7 dias. Se você quiser reter os dados por mais tempo (por exemplo, para dar suporte à viagem no tempo por períodos mais longos), deverá definir essa propriedade da tabela como um valor mais alto. O exemplo a seguir mostra a configuração desse limite como 30 dias:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Parâmetros

  • table_name

    Identifica uma tabela do Delta existente. O nome não deve incluir uma especificação temporal ou especificação de opções.

  • RETAIN num HOURS

    O limite de retenção.

  • DRY RUN

    Retorna uma lista de até 1.000 arquivos a serem excluídos.

Executar vácuo em uma tabela não Delta

Executa vácuo recursivamente nos diretórios associados a tabelas não Delta e remove arquivos não confirmados que excederam um limite de retenção. O limite padrão é sete dias.

Em tabelas não Delta, o Azure Databricks dispara automaticamente operações de VACUUM à medida que os dados são gravados.

Sintaxe

VACUUM table_name [RETAIN num HOURS]

Parâmetros

  • table_name

    Identifica uma tabela existente por nome ou caminho.

  • RETAIN num HOURS

    O limite de retenção.