(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como usar VACUUM numa tabela Delta no Lakehouse do Fabric

João Barros 10 de July de 2026 4 min de leitura

À medida que atualizas, apagas e otimizas uma tabela Delta no Lakehouse, acumulam-se ficheiros de dados que já não pertencem à versão atual da tabela, mas continuam a ocupar espaço no OneLake. O comando VACUUM serve exatamente para limpar esses ficheiros antigos de forma controlada, recuperando armazenamento sem afetar os dados atuais. A seguir vês como aplicar o VACUUM a uma tabela Delta no Lakehouse em segurança, começando por um DRY RUN antes de apagar seja o que for.

Pré-requisitos

  • Um workspace do Microsoft Fabric com uma capacidade ativa.
  • Um Lakehouse com, pelo menos, uma tabela Delta onde já tenhas feito operações como UPDATE, DELETE, MERGE ou OPTIMIZE.
  • Um notebook do Fabric associado a esse Lakehouse para correr Spark SQL ou PySpark.
  • Conhecimentos básicos de SQL.

Passo 1: Perceber porque existem ficheiros a mais

Sempre que fazes um UPDATE, DELETE, MERGE ou OPTIMIZE, o Delta não altera os ficheiros existentes: escreve ficheiros Parquet novos e marca os antigos como removidos no registo de transações. Os ficheiros antigos ficam fisicamente guardados para que o time travel continue a funcionar. Com o tempo, acumulam-se e aumentam o custo de armazenamento, mesmo que a tabela tenha poucas linhas.

É esta acumulação que o VACUUM resolve: remove os ficheiros que já não são referenciados pela versão atual e que são mais antigos do que a janela de retenção.

Passo 2: Simular a limpeza com DRY RUN

Antes de apagar seja o que for, usa a opção DRY RUN. Ela mostra a lista de ficheiros que seriam removidos, sem os apagar. É a forma mais segura de perceber o impacto do comando.

-- Lista os ficheiros que seriam removidos, sem apagar nada
VACUUM vendas RETAIN 168 HOURS DRY RUN

Substitui vendas pelo nome da tua tabela. Se a lista vier vazia, não há ficheiros suficientemente antigos para limpar — e isso é perfeitamente normal.

Passo 3: Executar o VACUUM com a retenção padrão

Quando estiveres à vontade com o resultado do DRY RUN, corre o VACUUM sem essa opção. Sem indicares um intervalo, o Delta usa a retenção padrão de sete dias (168 horas), ou seja, mantém tudo o que possa ser necessário para ler versões da última semana.

-- Remove ficheiros com mais de 7 dias que já não são referenciados
VACUUM vendas

O comando devolve o caminho da tabela e limpa os ficheiros elegíveis. É seguro corrê-lo várias vezes: se não houver nada a remover, não faz nada.

Passo 4: Reduzir a janela de retenção (com cuidado)

Por vezes queres recuperar espaço mais depressa e reduzir a retenção para menos de sete dias. O Delta tem uma verificação de segurança que impede isto por omissão, porque apagar ficheiros recentes pode partir o time travel e afetar leituras em curso. Só deves desativá-la se compreenderes o impacto.

-- Usar apenas quando percebes o efeito no time travel
SET spark.databricks.delta.retentionDurationCheck.enabled = false;
VACUUM vendas RETAIN 24 HOURS;
Aviso: nunca uses RETAIN 0 HOURS numa tabela com escritas simultâneas — podes apagar ficheiros ainda em uso e perder dados. Em produção, mantém a retenção padrão sempre que possível.

Passo 5: Alternativa em PySpark

Se preferes trabalhar em Python, a API DeltaTable faz o mesmo que o comando SQL. É útil quando queres integrar a limpeza num notebook de manutenção já existente.

from delta.tables import DeltaTable

dt = DeltaTable.forName(spark, "vendas")
dt.vacuum()        # retenção padrão de 168 horas
# dt.vacuum(168)   # o mesmo, mas explícito em horas

Verificar o resultado

Para confirmar que o VACUUM correu, consulta o histórico da tabela. Vais ver operações VACUUM START e VACUUM END registadas com a data e a hora.

DESCRIBE HISTORY vendas

Podes também reparar que o espaço ocupado pela pasta da tabela no OneLake diminuiu. Se tentares fazer time travel para uma versão mais antiga do que a retenção definida, essa leitura vai falhar — o que é o comportamento esperado depois de limpar os ficheiros.

Conclusão

O VACUUM é a peça final de uma boa rotina de manutenção: primeiro compactas os ficheiros com OPTIMIZE e depois recuperas espaço com o VACUUM. No Fabric podes correr estes comandos manualmente num notebook ou usar a funcionalidade de manutenção de tabelas do próprio Lakehouse para os agendar. Começa com a retenção padrão, observa o histórico durante algumas semanas e só depois pondera ajustar a janela. Qual é a tabela do teu Lakehouse que mais tem crescido — e sabes há quanto tempo não passa por um VACUUM?