Reorganizar tabelas Delta com REORG

Use o REORG comando quando precisar reescrever parte de uma tabela Delta para uma meta de manutenção específica. Em Fabric, REORG reorganiza o layout físico de uma tabela reescrevendo arquivos de dados ou atualizando metadados de tabela, dependendo da opção escolhida.

REORG é diferente da compactação de arquivos de rotina. Ele destina-se a cenários como a remoção física de linhas que excluem vetores marcados como excluídos.

O que o REORG faz

REORG TABLE reescreve o estado da tabela para uma operação de manutenção definida.

  • APPLY (PURGE) reescreve arquivos de dados afetados para que as linhas que foram excluídas suavemente por meio de vetores de exclusão sejam fisicamente removidas dos arquivos Parquet subjacentes.

Use REORG quando precisar de um resultado de reescrita específico, não apenas arquivos menores ou menos.

Use o PURGE para remover fisicamente linhas excluídas de forma lógica

Os vetores de exclusão permitem que Delta Lake marque linhas como excluídas sem reescrever os arquivos Parquet originais imediatamente. Esse comportamento mantém as operações de exclusão eficientes, mas os dados de linha excluídos ainda existem nos arquivos físicos até que você as reescreva.

Quando você executa REORG TABLE ... APPLY (PURGE), Fabric reescreve os arquivos afetados e remove as linhas excluídas suavemente dos arquivos parquet ativos. Depois que PURGE for concluído, essas linhas excluídas de fato não estarão mais nos arquivos reescritos.

Note

PURGE normalmente, não é necessário como uma etapa de manutenção separada. OPTIMIZE limpa automaticamente arquivos em que mais de 5% de registros são referenciados por vetores de exclusão durante a compactação. Reserve PURGE para cenários em que você precisa de controle explícito sobre o momento em que linhas marcadas como excluídas são removidas fisicamente.

Esta opção é útil quando:

  • Você tem requisitos de conformidade ou GDPR e precisa que os dados excluídos sejam removidos fisicamente de acordo com um cronograma específico.
  • Você deseja forçar a remoção de arquivos que ficam abaixo do limite de 5% usado por OPTIMIZE.

Revisar a sintaxe

Use os exemplos a seguir em um bloco de anotações Fabric.

Limpar linhas excluídas suavemente de uma tabela

REORG TABLE table_name APPLY (PURGE)

Limpar linhas excluídas suavemente somente para dados correspondentes

REORG TABLE table_name WHERE predicate APPLY (PURGE)

Use uma WHERE cláusula quando quiser direcionar partições específicas ou uma fatia menor de dados.

REORG TABLE sales.orders
WHERE order_date = DATE '2026-05-01'
APPLY (PURGE)

Escolha REORG ou OPTIMIZE

REORG e OPTIMIZE resolvem problemas diferentes.

  • OPTIMIZE executa a compactação de compartimentos. Ele consolida arquivos pequenos em arquivos maiores para melhorar a eficiência da verificação.
  • REORG ... APPLY (PURGE) remove fisicamente as linhas que excluem vetores marcados como excluídos.

Você pode usar os dois comandos juntos. Por exemplo, você pode executar REORG ... APPLY (PURGE) para remover fisicamente os dados excluídos e, em seguida, executar OPTIMIZE para melhorar o layout do arquivo.

Entender os vetores de exclusão

Os vetores de exclusão são estruturas de metadados que marcam linhas como excluídas sem reescrever imediatamente os arquivos Parquet que contêm essas linhas. Os leitores respeitam os vetores de exclusão para que as linhas excluídas não apareçam nos resultados da consulta, mas os bytes ainda permanecem no armazenamento até que ocorra uma reescrita.

REORG ... APPLY (PURGE) é a etapa que remove fisicamente essas linhas dos arquivos Parquet reescritos.

Executar REORG no Fabric

Executar REORG em experiências baseadas em Spark no Fabric, como:

  • Blocos de anotações de malha
  • Definições de trabalho do Spark

Não execute REORG a partir do endpoint de análise SQL. REORG é um comando de manutenção sql do Spark para tabelas Delta.

Siga as práticas recomendadas

  • Execute PURGE somente quando você tiver uma necessidade específica, como requisitos de conformidade. OPTIMIZE limpa automaticamente arquivos em que mais de 5% de registros são referenciados por vetores de exclusão, portanto, a manutenção de rotina geralmente não requer uma etapa separada PURGE .
  • Execute PURGE antes de VACUUM quando precisar remover fisicamente os dados excluídos para fins de conformidade ou para atender a requisitos do GDPR.
  • Use WHERE predicados para direcionar partições específicas quando você não precisar reescrever a tabela completa.
  • Use UPGRADE UNIFORM quando precisar de leitores do Iceberg, mas leve em conta os metadados adicionais que o UniForm mantém.
  • Tratar REORG e OPTIMIZE como operações de manutenção complementares, não intercambiáveis.