Tabelas Delta DE VÁCUO

Use o comando Delta Lake VACUUM para remover permanentemente arquivos de dados que não são mais referenciados por uma tabela Delta e que são mais antigos que o limite de retenção.

No Fabric, VACUUM ajuda você a limpar arquivos obsoletos no OneLake após atualizações, deleções, mesclas e operações de compactação. Ele reduz o consumo de armazenamento, remove arquivos obsoletos que Fabric não precisam mais para o estado da tabela ativa e recupera o espaço após operações de manutenção, como OPTIMIZE.

VACUUM segue os mesmos conceitos centrais do Delta Lake com os quais você talvez já esteja familiarizado no Delta Lake de código aberto, mas você o executa em experiências do Spark no Fabric, como notebooks, definições de trabalho do Spark e a UI do Lakehouse Maintenance.

O que o VACUUM remove

Uma tabela Delta mantém o controle dos arquivos que compõem o estado atual da tabela no log Delta. Quando operações como UPDATE, DELETE, MERGE, gravações de sobrescrita ou compactação substituem arquivos Parquet mais antigos por arquivos mais recentes, os arquivos antigos podem se tornar não referenciados.

VACUUM remove esses arquivos não referenciados somente quando ambas as condições são verdadeiras:

  • Os arquivos não são mais referenciados pelo log Delta.
  • Os arquivos são mais antigos que o limite de retenção configurado.

Como VACUUM exclui permanentemente os arquivos do OneLake, use-os cuidadosamente quando ainda precisar de versões mais antigas da tabela.

Por que o VACUUM importa

Execute VACUUM quando quiser:

  • Reduzir o custo de armazenamento excluindo arquivos obsoletos do OneLake
  • Recuperar espaço após atualizações, exclusões e operações de mesclagem
  • Limpar os arquivos anteriores à compactação após OPTIMIZE criar arquivos substitutos
  • Impedir que tabelas de produção de longa execução acumulem arquivos de dados obsoletos desnecessários

VACUUM não melhora o desempenho da consulta sozinho da mesma maneira que as otimizações de compactação ou layout de arquivo. Sua principal finalidade é a limpeza do armazenamento.

Onde executar VACUUM

VACUUM é um comando Spark em Fabric. Execute-o em locais que usam o mecanismo Spark, como:

  • Blocos de anotações de malha
  • Definições de trabalho do Spark
  • A interface do usuário de manutenção do Lakehouse e os fluxos de trabalho de manutenção baseados em pipeline

Não execute VACUUM no endpoint de análise SQL nem no editor SQL do warehouse. Essas experiências não dão suporte a comandos de manutenção do Spark Delta.

Se você quiser um fluxo de trabalho baseado no portal, consulte Manutenção de tabelas do Lakehouse.

Note

Em notebooks, execute exemplos de SQL em uma célula do Spark SQL, exemplos de Python em uma célula do PySpark e exemplos de Scala em uma célula do Scala.

Exemplos de sintaxe

Use os exemplos a seguir ao executar VACUUM no Fabric.

Executar VACUUM em uma tabela com a retenção padrão

VACUUM schema_name.table_name

Aspirar uma tabela com um limite de retenção personalizado

VACUUM schema_name.table_name RETAIN 168 HOURS

Visualizar arquivos com DRY RUN

Use DRY RUN para listar os arquivos que seriam excluídos sem realmente excluí-los.

VACUUM schema_name.table_name DRY RUN

Você também pode combinar RETAIN e DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Vácuo no modo LITE

VACUUM LITE é uma alternativa mais rápida que usa apenas o log de transações Delta para identificar arquivos não referenciados, em vez de listar todos os arquivos no diretório da tabela. Essa abordagem é significativamente mais rápida para tabelas grandes com muitos arquivos.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE identifica arquivos a serem removidos lendo o log Delta em vez de executar uma listagem de diretório completa. É mais rápido, mas requer um histórico de logs suficiente para determinar quais arquivos não estão referenciados. Se o log Delta tiver sido podado além do que o LITE modo precisa, uma DELTA_CANNOT_VACUUM_LITE exceção será gerada – nesse caso, volte para o padrão VACUUM (modo completo).

Note

VACUUM LITE é compatível com o runtime 2.0 do Fabric Spark (Delta 4.1) ou versão posterior. Verifique se a versão do runtime do Fabric dá suporte a esse recurso.

Vácuo com uma tabela de inventário

Para tabelas muito grandes em que até mesmo a listagem de diretório completo padrão VACUUM é lenta, você pode fornecer um inventário pré-compilado de arquivos. Em vez de listar o diretório da tabela em runtime, VACUUM lê os caminhos de arquivo do inventário fornecido.

VACUUM schema_name.table_name USING INVENTORY inventory_table_name

VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')

A tabela de inventário (ou consulta) deve ter o seguinte esquema:

Column Tipo Description
path cadeia URI de arquivo totalmente qualificado.
length inteiro Tamanho do arquivo em bytes.
isDir boolean Se a entrada é um diretório.
modificationTime inteiro Registrar a hora da última modificação em milissegundos desde época.

Você pode preencher uma tabela de inventário a partir de metadados de arquivos do OneLake, relatórios de inventário da conta de armazenamento ou um trabalho personalizado do Spark que lista o diretório da tabela em uma programação definida. Isso desvincula a etapa dispendiosa de listagem de arquivos da própria operação VACUUM.

Período de retenção padrão

Se você não especificar um intervalo de retenção, VACUUM usará o período de retenção padrão de sete dias, que é 168 horas.

Esse padrão fornece aos leitores ativos, escritores e consultas de viagem no tempo uma janela mais segura antes que os arquivos mais antigos sejam removidos.

Verificação de segurança para curtos períodos de retenção

Delta Lake inclui uma verificação de segurança de retenção controlada por spark.databricks.delta.retentionDurationCheck.enabled.

Se você tentar usar um período de retenção menor que sete dias, essa verificação de segurança avisará você, a menos que você desabilite explicitamente a verificação na configuração do Spark.

Tenha cuidado extra antes de desabilitar essa proteção. Uma breve janela de retenção pode remover arquivos que ainda precisam de cargas de trabalho simultâneas ou cenários de recuperação.

Por exemplo, esses comandos solicitam um período de retenção de um dia:

VACUUM schema_name.table_name RETAIN 24 HOURS

Se o seu ambiente mantiver a verificação de segurança ativada, o tempo de execução avisará você sobre configurações de retenção inferiores a sete dias.

Entender o impacto na viagem no tempo

A viagem no tempo do Delta Lake permite consultar versões de tabela mais antigas, desde que os arquivos históricos necessários ainda existam.

VACUUM remove arquivos que são mais antigos que a janela de retenção, portanto, ele também remove os arquivos de dados necessários para viagens de tempo além dessa janela. Depois que esses arquivos forem aspirados, você não poderá consultar mais essas versões mais antigas.

Antes de reduzir a retenção, decida quanto acesso histórico suas cargas de trabalho, auditorias, etapas de depuração e processos de recuperação exigem. Para obter mais informações, consulte Viagem no tempo.

Entender o impacto nos vetores de exclusão

Os vetores de exclusão podem marcar linhas como excluídas sem reescrever imediatamente todos os arquivos de dados afetados. Devido a esse comportamento, os arquivos que parecem antigos ainda podem fazer parte do estado da tabela ativa.

VACUUM não remove arquivos que ainda são referenciados, incluindo arquivos que permanecem válidos porque os metadados de vetor de exclusão ainda apontam para eles. Se você usar vetores de exclusão e depois reorganizar ou otimizar a tabela, mais arquivos obsoletos poderão se tornar elegíveis para VACUUM após a conclusão dessas alterações.

Para reescrever fisicamente os dados afetados por vetores de exclusão, consulte tabelas DELTA REORG.

Siga as práticas recomendadas

Use estas práticas ao executar VACUUM no Fabric:

  • Execute VACUUM depois de OPTIMIZE para remover arquivos de pré-compactação que não são mais necessários.
  • Não defina a retenção abaixo de sete dias, a menos que você entenda claramente o efeito sobre viagens no tempo, leitores, escritores e recuperação.
  • Agende operações regulares VACUUM em pipelines de produção para que arquivos obsoletos não se acumulem no OneLake.
  • Defina seus requisitos de viagem no tempo antes de reduzir a retenção.
  • Use DRY RUN primeiro quando quiser verificar quais arquivos estão prestes a ser removidos.

Para orientações sobre manutenção em todo o Fabric, consulte Visão geral da manutenção de tabelas e Manutenção de tabelas no Lakehouse.

Entenda o que o VACUUM não remove

VACUUM remove arquivos de dados obsoletos, mas não exclui arquivos de log Delta na _delta_log pasta.

A limpeza do log do Delta segue o comportamento de ponto de verificação e retenção de log, que é separado do VACUUM.