Manutenção e otimização de tabelas transversais entre cargas de trabalho no Microsoft Fabric

As tabelas Delta no Microsoft Fabric podem dar suporte ao Spark, ao endpoint de análise SQL, ao Power BI Direct Lake, ao Warehouse e a outras experiências do Fabric a partir de dados armazenados no OneLake. O desempenho ótimo entre cargas de trabalho depende de dois fatores:

  • A carga de trabalho que cria e mantém a tabela.
  • Os mecanismos que consomem a tabela.

As tabelas Lakehouse são comumente gerenciadas pelo Spark, Fabric pipeline atividade Copy ou Dataflow Gen2. O Spark é o gravador mais comum e oferece a maior variedade de controles de layout e manutenção. O espelhamento de armazéns de dados e de bancos de dados gerencia automaticamente seus layouts físicos. Catálogos espelhados mantêm o layout gerenciado no sistema fonte. Os requisitos do consumidor são geralmente compatíveis, mas o Power BI Direct Lake possui requisitos adicionais de armazenamento para desempenho ideal.

Use uma tabela compartilhada sempre que seus requisitos forem compatíveis. Para as exceções que justificam outra tabela, veja Quando criar outra tabela.

Entenda a responsabilidade pelo layout

Comece identificando qual carga de trabalho é responsável pela estrutura física da tabela. Os controles na tabela a seguir são os principais controles relevantes para o layout e manutenção da tabela de carga cruzada, e não uma lista exaustiva das capacidades de cada motor.

Armazenamento de dados Método de redação ou de ingestão Layout e responsabilidade pela manutenção Controles de chave
Lakehouse Spark Gerenciado pelo usuário Dimensionamento do arquivo: tamanho adaptativo do arquivo alvo e alvos de compactação em nível de arquivo.
Escrita e manutenção: vetores de exclusão, autocompactação, otimizar escrita, OPTIMIZE, e VACUUM.
Organização de dados: liquid clustering, particionamento, Z-Order e V-Order.
Lakehouse Fabric pipeline atividade Copy ou Dataflow Gen2 O serviço grava os dados; o proprietário do lakehouse mantém a tabela Configurações de escrita específicas para destino. Realize a manutenção compatível separadamente, usando Spark, manutenção Lakehouse ou uma atividade de manutenção de tubulações.
Armazém Fabric Data Warehouse, atividade Copy do pipeline do Fabric ou Dataflow Gen2 Gerenciado por armazém Agrupamento de dados e a configuração V-Order no nível do warehouse.
Item espelhado Serviço de espelhamento Depende do tipo de espelhamento O espelhamento de banco de dados utiliza um layout Delta V-Ordered gerenciado pelo sistema, sem controles diretos de layout. Catálogos espelhados mantêm o layout do arquivo fonte, que você pode otimizar no sistema fonte quando suportado.

Orientação entre cargas de trabalho

A tabela a seguir resume a abordagem recomendada por produtor e consumidor.

Producer Consumer Abordagem recomendada
Lakehouse: Escritor da Spark Spark Use as configurações padrão do Fabric Spark runtime 2.0 ou posterior e ative a compactação automática. Considere o clustering líquido quando os predicados avaliados se beneficiarem de um melhor ignoramento de arquivos.
Lakehouse: Escritor da Spark Ponto de extremidade de análise SQL Use o mesmo layout recomendado para o Spark. Não defina um tamanho de arquivo alvo estático, limite arbitrário de linhas ou ordem em V apenas para desempenho de endpoints de análise SQL.
Lakehouse: Escritor da Spark Lago Direto do Power BI Use o mesmo layout recomendado para o Spark e também ative o V-Order, ou use o perfil de readHeavyForPBI recursos.
Lakehouse: gravador de pipeline do Fabric ou Dataflow Gen2 Spark, endpoint de análise SQL ou Power BI Direct Lake Monitore a estrutura resultante dos arquivos e agende separadamente a manutenção compatível do lakehouse. Alguns modos de destino, como o Dataflow Gen2 incremental refresh, impõem restrições de manutenção.
Armazém Fabric Data Warehouse ou Spark Use o layout gerenciado pelo sistema. Fabric Data Warehouse gerencia automaticamente a compactação e outras manutenções. Use agrupamento de dados para melhorar a omissão de arquivos em cargas de trabalho com predicados seletivos recorrentes.
Armazém Lago Direto do Power BI Mantenha a configuração padrão do Warehouse V-Order. Use agrupamento de dados quando isso beneficiar padrões de consulta compartilhados.
Espelhamento Spark, endpoint de análise SQL ou Power BI Direct Lake Para espelhamento de banco de dados, use o layout V-Ordered Delta gerenciado pelo sistema. Para catálogos espelhados, otimize os arquivos subjacentes no sistema de origem, quando houver suporte. Consulte O que é Espelhamento no Fabric?.

Otimizar tabelas Lakehouse

As tabelas Delta Lakehouse exigem uma estratégia de manutenção explícita, independentemente de Spark, Pipeline atividade Copy ou Dataflow Gen2 escrevê-las. O Spark é o principal exemplo nesta seção porque oferece os controles de layout e manutenção mais amplos do Fabric.

Importante

A manutenção de tabelas é essencial para o desempenho ideal de gravação e leitura em todos os mecanismos. Mesmo cargas de trabalho append-only que inicialmente tenham bom desempenho sem manutenção podem acumular arquivos pequenos em excesso, o que afeta o Spark, o endpoint de análises SQL, o Direct Lake e leitores externos de dados. Veja Tabelas Delta de Compactação para métodos automáticos e manuais de compactação.

Use os padrões de runtime do Spark

Quando o Spark grava a tabela, use o tempo padrão do Fabric Spark 2.0 ou posterior:

No ambiente de execução do Fabric Spark 1.3, tamanho de arquivo de destino adaptável, destinos de compactação no nível do arquivo e vetores de exclusão estão disponíveis como configurações opcionais.

Quando o Pipeline atividade Copy ou o Dataflow Gen2 escrevem a tabela, inspecione o layout de arquivos resultante e programe a manutenção separadamente. Não presuma que esses redatores aplicam padrões de runtime do Spark.

Importante

Os destinos do lakehouse do Dataflow Gen2 que usam atualização incremental não oferecem suporte a OPTIMIZE nem REORG TABLE. Siga as limitações incrementais de atualização do Dataflow Gen2.

Prevenir e compactar arquivos pequenos

Para tabelas escritas pelo Spark, prefira autocompactação. Esse recurso avalia a fragmentação da tabela após as gravações e executa compactação apenas quando necessário. Isso elimina a necessidade de uma verificação separada da saúde da mesa antes da manutenção.

Use as seguintes orientações para exceções e recursos complementares:

Scenario Abordagem recomendada
Tabela gravada pelo Spark Ative a autocompactação como estratégia padrão de manutenção.
Gravações em streaming ou microbatch Ative a compactação automática e otimize a gravação para reduzir o acúmulo de arquivos pequenos.
Cargas de trabalho com requisitos rigorosos de latência de escrita Agende OPTIMIZE separadamente em vez de executar a compactação automática de forma síncrona.
Tabela existente com arquivos pequenos acumulados Execute uma única OPTIMIZEvez e depois ative a compactação automática para manutenção contínua.
Tabelas com atualizações, excluções ou fusões frequentes Mantenha os vetores de exclusão e a autocompactação ativados.

OPTIMIZE compacta arquivos e elimina automaticamente os vetores de exclusão de um arquivo quando mais de 5% de seus registros são referenciados por vetores de exclusão. Use REORG TABLE ... APPLY (PURGE) apenas quando você precisar eliminar fisicamente registros abaixo desse limite ou atender a um requisito específico de conformidade.

Nota

Compactação automática remove vetores de exclusão apenas quando a partição também atinge o gatilho de arquivos pequenos. Se uma carga de trabalho realizar atualizações ou exclusões sem gerar arquivos pequenos, execute OPTIMIZE periodicamente para eliminar vetores de exclusão qualificados. Use REORG TABLE ... APPLY (PURGE) quando for necessário forçar uma purga física.

Execute VACUUM em um cronograma separado para remover arquivos não referenciados após o período de retenção. VACUUM Recupera o armazenamento, mas não melhora o layout do arquivo ativo.

Warning

Não reduza o VACUUM período de retenção sem avaliar as necessidades de viagem no tempo e os leitores ou escritores simultâneos. Remover arquivos muito cedo pode tornar as versões necessárias das tabelas indisponíveis.

Organize os dados para pular arquivos

Use liquid clustering quando padrões recorrentes de filtragem ou processamento se beneficiam de ignorar arquivos. Tabelas com clusterização líquida exigem OPTIMIZEou compactação automática para organizar os dados gravados recentemente.

Evite particionar por padrão. Use-o quando um requisito específico justificar os tradeoffs operacionais, como isolar escritores concorrentes que atualizam, excluem ou mescem dados entre partições disjuntas. Para mais informações, veja Quando usar particionamento.

Para tabelas particionadas existentes, considere a Ordem Z quando predicados seletivos comumente filtram nas mesmas colunas dentro de uma partição.

Otimize as tabelas gerenciadas pelo Warehouse

Fabric Data Warehouse gerencia o layout físico da tabela Delta independentemente do método de ingestão.

Use os controles estratégicos que o Warehouse expõe para ajustar o layout dos dados:

  • Aplique agrupamento de dados a tabelas grandes quando as consultas usarem repetidamente predicados seletivos nas mesmas colunas.
  • Mantenha V-Order ativado para cargas de trabalho voltadas para leitura e mistas. A V-Order está ativada por padrão.
  • Considere desativar V-Order para cargas de trabalho de data warehouse com uso intensivo de gravação.

Warning

Desativar a V-Order é uma operação irreversível em nível de armazém. Teste toda a carga de leitura e escrita antes de desativá-la.

Para orientações completas sobre o Armazém, consulte as diretrizes de desempenho em Fabric Data Warehouse.

Otimizar dados espelhados

Sua capacidade de melhorar o layout físico depende se o Fabric replica os dados ou faz referência a arquivos fonte:

  • Espelhamento de banco de dados: O Fabric replica os dados de origem em tabelas Delta no OneLake e gerencia o layout e a manutenção dos arquivos V-Order. Você não pode configurar diretamente o tamanho de arquivo de destino, a limpeza de vetores de exclusão, o clustering líquido, o particionamento nem o V-Order no destino espelhado.
  • Catálogos espelhados: O Fabric sincroniza metadados e usa atalhos do OneLake para referenciar dados de origem no local. O Fabric não reescreve nem mantém esses arquivos. Melhore a disposição física e a limpeza do sistema de origem quando os recursos com suporte permitirem. Essas mudanças são visíveis por meio dos atalhos, sem que outra cópia seja criada no Fabric.

Para dados espelhados no banco de dados:

  • Use predicados seletivos e evite colunas desnecessárias em consultas do Spark e SQL.
  • Projete modelos semânticos e medidas DAX do Power BI para consumo eficiente de Direct Lake.

Para catálogos espelhados:

  • Use os recursos de manutenção e layout de tabelas compatíveis com a plataforma de origem.
  • Avalie o arquivo fonte e a distribuição por grupos de linhas para os consumidores do Fabric que consultam os atalhos.
  • Para Direct Lake, avalie a criação de uma camada adicional de disponibilização, com modelagem dimensional e V-Ordered, quando o layout de origem não puder atender aos requisitos de desempenho.

Para espelhar conceitos, tipos e fontes suportadas, veja O que é o Espelhamento no Fabric? e Como funciona o espelhamento de metadados.

Aplicar otimização específica para o consumidor

O Spark e o endpoint de análise de SQL apresentam bom desempenho na mesma arquitetura adaptativa de lakehouse. Use tamanho de arquivo alvo adaptativo, evite a criação excessiva de arquivos pequenos e aplique liquid clustering quando os predicados medidos se beneficiarem de uma eliminação de arquivos aprimorada. Não ative o V-Order somente por causa do desempenho do Spark ou do endpoint de análise SQL. Para detalhes específicos do motor, veja considerações de desempenho de endpoints em análise SQL.

Lago Direto do Power BI

O Direct Lake usa as mesmas tabelas Delta subjacentes, mas adiciona recomendações relacionadas à transcodificação e enquadramento incremental:

Nota

O Direct Lake geralmente apresenta melhor desempenho com grupos de linhas entre 1 milhão e 16 milhões de linhas. Avalie a distribuição por grupos de linhas e o desempenho do Direct Lake antes de mudar a configuração do produtor suportado.

Para tabelas escritas pelo Spark, define spark.sql.parquet.native.writer.maxRowGroupRowCount o número máximo de linhas por grupo de linhas quando o motor de execução nativo grava os arquivos Parquet. O valor padrão é 0, que não impõe um máximo. Se a análise mostrar que o dimensionamento dos grupos de linhas está afetando o desempenho do Direct Lake, defina um limite testado antes de escrever ou reescrever a tabela. Por exemplo:

spark.conf.set("spark.sql.parquet.native.writer.maxRowGroupRowCount", 8_000_000)

Não defina o limite apenas para atingir uma contagem específica de linhas. Largura de linha, compressão, distribuição de arquivos e paralelismo de capacidade também afetam o desempenho. Use o Delta Analyzer para avaliar o layout resultante.

Para orientações detalhadas sobre enquadramento, transcodificação, grupos de linhas, padrões de atualização e Delta Analyzer, consulte Entenda o desempenho das consultas do Direct Lake.

Aplique as diretrizes às camadas medallion

Bronze, Prata e Ouro descrevem o propósito e o refinamento dos dados. Eles não determinam se o layout é gerenciado pelo usuário ou pelo sistema, e não exigem cópias separadas para cada consumidor.

Camada Meta principal Orientação para diferentes cargas de trabalho
Bronze (página de destino) Preserve a fidelidade da fonte e o throughput de ingestão Priorize o throughput de escrita enquanto mantém tabelas escritas pelo Spark com autocompactação. Evite modelos semânticos do Power BI Direct Lake em tabelas Bronze brutas, a menos que o modelo e a forma dos dados sejam intencionalmente projetados para esse uso.
Prata (selecionado) Forneça dados validados e conformes para reutilização Reutilize a tabela em consumidores do Fabric compatíveis. Para tabelas do lakehouse gravadas pelo Spark, ative V-Order somente quando Direct Lake for o principal consumidor.
Ouro (porção) Fornecer dimensões, fatos, agregados e modelos analíticos prontos para uso empresarial Prefiro essa camada para modelos semânticos do Direct Lake. Reutilize a tabela entre consumidores compatíveis e aplique os controles específicos do produtor descritos neste artigo.

Resolver problemas de layout e manutenção

Use remediação consciente do produtor. Aplique comandos de manutenção do Spark às tabelas lakehouse quando o modo de destino der suporte a essas operações. Trate os sinais como indicadores, e não como limiares universais, e valide-os em relação ao padrão de escrita da tabela e ao desempenho do consumidor.

Condição Sinal Tabela Lakehouse Tabela de armazém
Arquivos excessivamente pequenos A contagem de arquivos aumenta mais rápido que o tamanho da tabela ativa, e os arquivos permanecem abaixo do alvo adaptativo. Com o Spark, execute uma OPTIMIZE única para o backlog existente e depois ative a compactação automática. Para a Pipeline atividade Copy ou escritas Dataflow Gen2, o cronograma suportava a manutenção do lakehouse separadamente. Nenhuma ação. A compactação do armazém é automática.
Arquivos legados de grande tamanho Os arquivos permanecem muito acima do alvo adaptativo atual, e poucos arquivos limitam o paralelismo de varredura. Reescreva a tabela usando uma substituição ou CREATE OR REPLACE TABLE AS SELECT com tamanho de arquivo de destino adaptativo ativado. Nenhuma ação. O Warehouse gerencia o tamanho do arquivo automaticamente.
Acumulação de vetor de deleção DESCRIBE HISTORY Métricas mostram que vetores de exclusão são adicionados ou atualizados mais rápido do que a compactação os remove, potencialmente aumentando a sobrecarga de leitura. Mantenha a compactação automática ativada. Se vetores de exclusão se acumularem sem disparar a compactação de arquivos pequenos, programe OPTIMIZE. Use REORG TABLE ... APPLY (PURGE) apenas para requisitos explícitos de purga. Nenhuma ação. A limpeza é gerenciada pelo sistema.
Pulo de arquivos ruim Predicados seletivos analisam uma grande parte da tabela, ou avaliação de qualidade por agrupamento mostra má organização. Com o Spark, configure liquid clustering ou use Z-Order em uma tabela particionada existente. Configurar clusterização de dados do Warehouse.
Sobrecarga da transcodificação do Direct Lake O Delta Analyzer mostra arquivos excessivos, pequenos grupos de linhas ou retranscodificação ampla após atualizações. Compacte arquivos pequenos, revise grupos de linhas e aplique a ordem V às tabelas escritas pelo Spark. Opcionalmente, configure o agrupamento líquido para melhorar a qualidade da compressão nos arquivos Parquet. Mantenha o V-Order ativado e avalie o agrupamento de dados.
Crescimento de armazenamento de arquivos sem referência O armazenamento OneLake cresce mais rápido que o tamanho da tabela ativa após operações de alteração de dados. Execute VACUUM de acordo com os requisitos de retenção. Nenhuma ação. A limpeza é gerenciada pelo sistema.

Para dados espelhados, siga as medidas de correção específicas do produtor em Otimizar dados espelhados. O espelhamento de banco de dados é gerenciado pelo sistema; Para catálogos espelhados, aplique manutenção suportada na plataforma de origem.

Para tabelas do lakehouse, as opções de inspeção suportadas pelo Spark incluem:

  • Execute DESCRIBE DETAIL para inspecionar a contagem de arquivos, o tamanho total e a propriedade avaliada delta.targetFileSize.adaptive .
  • Corra DESCRIBE HISTORY para revisar padrões de escrita e histórico de manutenção.
  • Use o Delta Analyzer quando precisar de uma análise detalhada dos grupos de linhas do Direct Lake e dos padrões de atualização.

Inspecionar o tamanho médio dos arquivos

Use DESCRIBE DETAIL para calcular o tamanho médio do arquivo como um indicador inicial do layout da tabela:

details = spark.sql("DESCRIBE DETAIL schema_name.table_name").first()

table_size_gb = details["sizeInBytes"] / (1024**3)
num_files = details["numFiles"]
avg_file_size_mb = (
    details["sizeInBytes"] / num_files / (1024**2)
    if num_files
    else 0
)

print(f"Table size: {table_size_gb:.2f} GB")
print(f"Number of files: {num_files}")
print(f"Average file size: {avg_file_size_mb:.2f} MB")

Uma média pode esconder o descompasso entre partições ou arquivos recentes e previamente compactados. Se a média indicar um possível problema de layout, inspecione os arquivos de Parquet individuais ou use o Delta Analyzer para avaliar a distribuição antes de alterar as configurações de manutenção.

Quando criar outra tabela

Não crie outra tabela física apenas porque múltiplos motores Fabric consomem os dados.

Crie outra tabela quando ela tiver um propósito independente, como:

  • Uma transformação ou agregação que altera o grão ou o significado comercial dos dados.
  • Requisitos diferentes de segurança, retenção ou qualidade dos dados.
  • Um requisito de latência ou atualização que a tabela compartilhada não consegue cumprir.
  • Um layout específico para o consumidor, cujo benefício medido supera seus custos de armazenamento, processamento, linhagem e governança.