VACUUM
Aplica-se a: Databricks SQL
Databricks Runtime
Remova arquivos não utilizados de um diretório de tabela.
Nota
Esse comando funciona de forma diferente dependendo se você está trabalhando em uma tabela Delta ou Apache Spark.
Fazer a limpeza de uma tabela Delta
Aspirar 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.
Em tabelas Delta, o Azure Databricks não aciona VACUUM
operações automaticamente.
Se você executar VACUUM
em uma tabela Delta, perderá a capacidade de viajar no tempo de volta para uma versão anterior ao período de retenção de dados especificado.
Aviso
É recomendável definir 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 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 mais longo do que a transação simultânea de execução prolongada e o período mais longo em que qualquer fluxo pode ficar aquém da atualização mais recente para a 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
.
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
No Databricks Runtime 16.0 e versões anterioresRETAIN num HOURS
devem preceder DRY RUN
na sintaxe.
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');
Parâmetros
-
Identifica uma tabela Delta existente. O nome não deve incluir uma especificação temporal ou uma especificação de opções.
RETAIN num HOURS
O limiar de retenção.
DRY RUN
Retornar uma lista de até 1000 arquivos a serem excluídos.
FULL
ouLITE
Aplica-se a:
Databricks SQL
Databricks Runtime 16.1 e versões posteriores
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, oVACUUM
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. SeVACUUM 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
.
Aspirar uma mesa não Delta
Aspira recursivamente diretórios associados à tabela não-Delta e remove arquivos não confirmados anteriores a um limite de retenção. O limiar predefinido é 7 dias.
Em tabelas não Delta, o Azure Databricks aciona automaticamente as operações à medida que os VACUUM
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 limiar de retenção.