Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use o comando Delta Lake VACUUM para remover permanentemente ficheiros de dados que já não são referenciados por uma tabela Delta e que são mais antigos do que o seu limiar de retenção.
No Fabric, VACUUM ajuda-te a limpar ficheiros obsoletos no OneLake após atualizações, eliminações, fusões e operações de compactação. Reduz o consumo de armazenamento, remove ficheiros obsoletos de que o Fabric já não necessita para o estado atual da tabela ativa e recupera espaço após operações de manutenção, como OPTIMIZE.
VACUUM segue os mesmos conceitos fundamentais do Delta Lake com que possas estar familiarizado a partir do Delta Lake de código aberto, mas é executado em experiências do Fabric Spark, como notebooks, definições de tarefas do Spark e a IU Maintenance do Lakehouse.
O que o VACUUM remove
Uma tabela Delta acompanha os ficheiros que compõem o estado atual da tabela no registo Delta. Quando operações como UPDATE, DELETE, MERGE, sobrescrevem ou compactação substituem ficheiros Parquet antigos por mais recentes, os ficheiros antigos podem ficar sem referência.
VACUUM remove esses ficheiros não referenciados apenas quando ambas as condições são verdadeiras:
- Os ficheiros já não são referenciados pelo registo Delta.
- Os ficheiros são mais antigos do que o limiar de retenção configurado.
Como VACUUM apaga permanentemente ficheiros do OneLake, usa-o com cuidado quando ainda precisares de versões antigas das tabelas.
Porque é que o VÁCUO é importante
Execute VACUUM quando quiser:
- Reduzir o custo de armazenamento eliminando ficheiros obsoletos do OneLake
- Recuperar espaço após atualizações, eliminações e operações de fusão
- Limpar ficheiros de pré-compactação após
OPTIMIZEcriar ficheiros de substituição - Evitar que tabelas de produção de longa duração acumulem ficheiros de dados desnecessários e obsoletos
VACUUM não melhora o desempenho das consultas por si só da mesma forma que as otimizações de compactação ou layout de ficheiros. O seu principal objetivo é a limpeza do armazenamento.
Onde correr o VACUUM
VACUUM é um comando Spark em Fabric. Utilize-o em locais que utilizem o motor Spark, tais como:
- Blocos de notas do Fabric
- Definições de tarefas do Spark
- A interface de manutenção do Lakehouse e os fluxos de trabalho de manutenção baseados em pipelines
Não corra VACUUM no endpoint de análise SQL nem no editor SQL do armazém. Essas experiências não suportam comandos de manutenção do Spark Delta.
Se quiser um fluxo de trabalho baseado no portal, veja Manutenção de tabelas do Lakehouse.
Note
Em cadernos, executa exemplos SQL numa célula SQL Spark, exemplos Python numa célula PySpark e exemplos Scala numa célula Scala.
Exemplos de sintaxe
Use os seguintes exemplos quando executar VACUUM em Fabric.
Aspirar uma tabela com a retenção predefinida
Aspire uma mesa com um limiar de retenção personalizado
Pré-visualizar ficheiros com DRY RUN
Uso DRY RUN para listar os ficheiros que seriam apagados sem realmente os apagar.
VACUUM schema_name.table_name DRY RUN
Também pode combinar RETAIN e DRY RUN.
VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN
Vácuo em modo LITE
VACUUM LITE é uma alternativa mais rápida que utiliza apenas o registo de transações Delta para identificar ficheiros não referenciados, em vez de listar todos os ficheiros no diretório da tabela. Esta abordagem é significativamente mais rápida para tabelas grandes com muitos ficheiros.
VACUUM schema_name.table_name LITE
VACUUM schema_name.table_name LITE RETAIN 168 HOURS
VACUUM LITE identifica ficheiros a remover lendo o registo Delta em vez de realizar uma listagem completa do diretório. É mais rápido, mas requer histórico suficiente para determinar quais os ficheiros que não estão referenciados. Se o registo Delta tiver sido depurado para além do necessário para o modo LITE, é gerada a exceção DELTA_CANNOT_VACUUM_LITE — nesse caso, recorra ao VACUUM padrão (modo completo).
Note
VACUUM LITE é suportado em Fabric runtime Spark 2.0 (Delta 4.1) ou posterior. Confirme se a sua versão de runtime Fabric suporta esta funcionalidade.
Aspirador com uma tabela de inventário
Para tabelas muito grandes onde até a listagem completa padrão VACUUM do diretório é lenta, podes fornecer um inventário pré-calculado dos ficheiros. Em vez de listar o diretório da tabela em tempo de execução, VACUUM lê os caminhos dos ficheiros do inventário que forneces.
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:
| Coluna | Tipo | Description |
|---|---|---|
path |
cadeia (de caracteres) | URI de ficheiro completo. |
length |
número inteiro | Tamanho do ficheiro em bytes. |
isDir |
booleano | Se a entrada é um diretório. |
modificationTime |
número inteiro | Tempo de última modificação em milissegundos desde a época. |
Pode preencher uma tabela de inventário a partir de metadados de ficheiros OneLake, relatórios de inventário da conta de armazenamento ou um trabalho Spark personalizado que liste o diretório de tabelas num calendário. Isto desacopla a etapa dispendiosa de listagem de ficheiros da própria operação VACUUM.
Período de retenção predefinido
Se não especificar um intervalo de retenção, VACUUM use o período padrão de sete dias, que são 168 horas.
Esse padrão oferece aos leitores ativos, escritores e consultas de viagem no tempo uma janela mais segura antes de os ficheiros mais antigos serem removidos.
Verificação de segurança para períodos curtos de retenção
Delta Lake inclui uma verificação de segurança de retenção controlada por spark.databricks.delta.retentionDurationCheck.enabled.
Se tentar usar um período de retenção inferior a sete dias, esta verificação de segurança avisa-o, a menos que desative explicitamente a verificação na configuração do Spark.
Tenha cuidado extra antes de desativar esta proteção. Uma janela de retenção curta pode remover ficheiros que cargas de trabalho ou cenários de recuperação concorrentes ainda precisam.
Por exemplo, estes comandos pedem um período de retenção de um dia:
Se o seu ambiente mantiver a verificação de segurança ativada, o ambiente de execução avisa-o sobre definições de retenção inferiores a sete dias.
Compreende o impacto na viagem no tempo
A viagem no tempo em Delta Lake permite-lhe consultar versões antigas das tabelas desde que os ficheiros históricos necessários ainda existam.
VACUUM remove ficheiros que são mais antigos do que a janela de retenção, por isso também remove os ficheiros de dados necessários para viajar no tempo para além dessa janela. Depois de esses ficheiros serem aspirados, já não podes consultar essas versões antigas.
Antes de reduzir a retenção, decida quanto acesso histórico requerem as suas cargas de trabalho, auditorias, passos de depuração e processos de recuperação. Para mais informações, consulte Viagem no tempo.
Compreender o impacto nos vetores de eliminação
Os vetores de eliminação podem marcar linhas como eliminadas sem reescrever imediatamente todos os ficheiros de dados afetados. Por causa desse comportamento, ficheiros que parecem antigos podem ainda fazer parte do estado ativo da tabela.
VACUUM não remove ficheiros que ainda estão referenciados, incluindo ficheiros que permanecem válidos porque os metadados do vetor de eliminação continuam a apontar para eles. Se usar vetores de eliminação e depois reorganizar ou otimizar a tabela, mais ficheiros obsoletos podem tornar-se elegíveis VACUUM após a conclusão dessas alterações.
Para reescrever fisicamente os dados afetados por vetores de eliminação, veja as tabelas Delta do REORG.
Siga as melhores práticas
Utilize estas práticas ao executar VACUUM no Fabric:
- Execute
VACUUMdepois deOPTIMIZEpara remover ficheiros de pré-compactação que já não são necessários. - Não defina um período de retenção inferior a sete dias, a menos que compreenda claramente o efeito na viagem no tempo, nas operações de leitura e escrita e na recuperação de dados.
- Agende operações periódicas
VACUUMem pipelines de produção para que ficheiros obsoletos não se acumulem no OneLake. - Defina os requisitos de viagem no tempo antes de reduzir a retenção.
- Use
DRY RUNprimeiro quando quiser verificar quais os ficheiros que estão prestes a ser removidos.
Para orientações de manutenção para todo o Fabric, consulte Descrição geral da manutenção de tabelas e Manutenção de tabelas do Lakehouse.
Entenda o que o VACUUM não remove
VACUUM remove ficheiros de dados obsoletos, mas não apaga os ficheiros de registo Delta na _delta_log pasta.
A limpeza do log Delta segue o comportamento de checkpoint e de retenção de logs, o que é separado de VACUUM.