VACUUM
Aplica-se a: SQL do Databricks 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
-
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
-
Identifica uma tabela existente por nome ou caminho.
RETAIN num HOURS
O limite de retenção.