Partilhar via


VACUUM

Aplica-se a:Assinalado Sim Databricks SQL Assinalado Sim Databricks Runtime

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

Nota

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

Fazer a limpeza de uma tabela Delta

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

VACUUM remove todos os arquivos do diretório da tabela que não são gerenciados pela Delta, bem como os 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 do que um limite de retenção. VACUUM ignorará todos os diretórios que começam com um sublinhado (_), 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 de dados da tabela Delta são excluídos de acordo com o tempo em que foram removidos logicamente do log de transações da Delta mais as horas de retenção, não seus carimbos de data/hora de modificação no sistema de armazenamento. O limiar predefinido é 7 dias.

Se correr VACUUM numa tabela Delta, perderá a capacidade de retroceder no tempo para uma versão anterior ao período de retenção de dados especificado.

Se a otimização preditiva estiver habilitada, o Azure Databricks acionará automaticamente a VACUUM operação como parte de seu processo de otimização. Na maioria dos casos, não é necessário executar VACUUM manualmente.

Aviso

É recomendável definir um intervalo de retenção de pelo menos 7 dias, porque capturas antigas e arquivos não confirmados ainda podem estar em uso por leitores ou escritores simultâneos na tabela. Se VACUUM limpar arquivos ativos, leitores simultâneos podem falhar ou, pior, tabelas podem ser corrompidas quando VACUUM exclui arquivos que ainda não foram confirmados. Tem de escolher um intervalo de tempo que seja mais longo do que a transação simultânea de maior duração e o maior período em que qualquer fluxo pode ficar atrasado em relação à atualização mais recente da tabela.

Delta Lake tem uma verificação de segurança para evitar que você execute um comando perigoso VACUUM . No Databricks Runtime, você tem certeza de que não há operações sendo executadas nesta tabela que levem mais tempo do que o intervalo de retenção que você planeja especificar, você pode desativar essa verificação de segurança definindo a propriedade spark.databricks.delta.retentionDurationCheck.enabled de configuração do Spark como false.

Executar limpeza numa tabela Apache Iceberg

Remove recursivamente arquivos não referenciados dos diretórios associados à tabela Apache Iceberg. O período de retenção é fixado em 7 dias.

Se a otimização preditiva estiver habilitada, o Azure Databricks acionará automaticamente a VACUUM operação como parte de seu processo de otimização. Na maioria dos casos, não é necessário executar VACUUM manualmente.

Sintaxe

VACUUM table_name { { FULL | LITE } | DRY RUN } [...]

Parâmetros

  • table_name

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

  • DRY RUN

    Retornar uma lista de até 1000 arquivos a serem excluídos.

  • FULL ou LITE

    Aplica-se a:marca de verificação sim Databricks SQL marca de verificação sim Databricks Runtime 16.1 e superior

    FULL executa a operação de vácuo no modo completo. Isso exclui arquivos de dados fora da duração da retenção e todos os arquivos no diretório da tabela não referenciados pela tabela.

    LITE executa a operação de vácuo em modo Lite. Em vez de localizar todos os arquivos no diretório da tabela, o VACUUM usa o log de transações Delta para identificar e remover arquivos que não são mais referenciados por nenhuma versão da tabela dentro da duração da retenção. Se VACUUM LITE não puder ser concluída porque o log Delta foi removido, uma exceção DELTA_CANNOT_VACUUM_LITE será gerada.

    O padrão é FULL.

Importante

A janela de retenção para o comando VACUUM é determinada pela propriedade delta.deletedFileRetentionDuration table, cujo padrão é 7 dias. Isso significa que VACUUM remove arquivos de dados que não são mais referenciados por uma versão de tabela Delta nos últimos 7 dias. Para reter dados por um período mais longo, como para dar suporte a viagens no tempo por durações mais longas, defina esta propriedade de tabela para um valor mais alto. O exemplo a seguir mostra a definição desse limite para 30 dias:

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

Aspirar outras mesas

Limpa recursivamente os diretórios associados a tabelas que não são Delta ou Iceberg, removendo arquivos não confirmados mais antigos do que um período de retenção. O limiar predefinido é 7 dias.

Nessas tabelas, o Azure Databricks aciona automaticamente as operações à medida que os VACUUM dados são gravados.

Sintaxe

VACUUM table_name

Parâmetros

  • table_name

    Identifica uma tabela existente por nome ou caminho.