sys.sp_get_table_health_metrics (Transact-SQL)

Aplica-se a:Endpoint de análise SQL no Microsoft Fabric

O sys.sp_get_table_health_metrics procedimento armazenado do sistema retorna métricas de saúde de armazenamento em nível de arquivo para uma tabela Lakehouse. O conjunto de resultados inclui distribuições de histogramas para tamanhos de arquivo, contagem de linhas e contagem de linhas excluídas, juntamente com detecção de anomalias que identifica condições comuns de armazenamento que degradam o desempenho das consultas.

Esse procedimento armazenado do sistema está disponível no endpoint de análise SQL para tabelas Lakehouse no Microsoft Fabric.

Syntax

sp_get_table_health_metrics [ @table_name = ] 'table_name'
[ ; ]

Arguments

[ @table_name = ] 'table_name'

O nome totalmente qualificado da tabela Lakehouse para analisar. Use o formato schema.table_name.

@table_name é nvarchar(256), sem padrão. Este parâmetro é obrigatório. O nome do esquema não é necessário se a tabela estiver no dbo esquema.

Valores do código de retorno

0 (êxito) ou um número diferente de zero (falha)

Conjunto de resultados

O sp_get_table_health_metrics conjunto de resultados é uma única linha.

Nome da Coluna Category Tipo de dados Description
PotentialAnomalyType Detecção de anomalias int Um código numérico representando a categoria de anomalia detectada. Veja códigos de tipo de anomalia para possíveis valores.
PotentialAnomalyDescription Detecção de anomalias nvarchar(256) Uma descrição legível pelo homem da anomalia detectada, ou None se nenhuma anomalia for detectada.
SnapshotVersion Versão da Tabela int A imagem atual da tabela.
CheckpointVersion Versão Checkpoint int Última versão de checkpoint. NULL se não existir nenhum ponto de controle.
PhysicalRowCount Resumo int Contagem total de linhas em todos os arquivos. Inclui linhas que foram deletadas, mas ainda estão armazenadas em arquivos de tabela.
DeletedRowCount Resumo int Número total de linhas logicamente excluídas.
FileCount Resumo int O número total de arquivos de dados (arquivos Parquet) que compõem a tabela.
DeletedBitmapCount Resumo int Número total de bitmaps de exclusão (ou seja, arquivos com linhas excluídas).
FileSizeInBytes Resumo int Tamanho total de todos os arquivos de dados em bytes.
FileRowCount[0] Histograma int Arquivos sem linhas de dados.
FileRowCount[1,10) Histograma int Arquivos com 1 a 9 linhas.
FileRowCount[10,100) Histograma int Arquivos com 10 a 99 linhas.
FileRowCount[100,1k) Histograma int Arquivos com 100 a 999 linhas.
FileRowCount[1k,10k) Histograma int Arquivos com 1.000 a 9.999 linhas.
FileRowCount[10k,100k) Histograma int Arquivos com 10.000 a 99.999 linhas.
FileRowCount[100k,1M) Histograma int Arquivos com 100.000 a 999.999 linhas.
FileRowCount[1M,10M) Histograma int Arquivos com 1.000.000 a 9.999.999 linhas.
FileRowCount[10M+) Histograma int Arquivos com mais de 10.000.000 de linhas.
FileDeletedRowCount[0] Histograma int Arquivos sem linhas deletadas.
FileDeletedRowCount[1,10) Histograma int Arquivos com 1 a 9 linhas deletadas.
FileDeletedRowCount[10,100) Histograma int Arquivos com 10 a 99 linhas excluídas.
FileDeletedRowCount[100,1k) Histograma int Arquivos com 100 a 999 linhas excluídas.
FileDeletedRowCount[1k,10k) Histograma int Arquivos com 1.000 a 9.999 linhas excluídas.
FileDeletedRowCount[10k,100k) Histograma int Arquivos com 10.000 a 99.999 linhas excluídas.
FileDeletedRowCount[100k,1M) Histograma int Arquivos com 100.000 a 999.999 linhas deletadas.
FileDeletedRowCount[1M,10M) Histograma int Arquivos com 1.000.000 a 9.999.999 linhas deletadas.
FileDeletedRowCount[10M+) Histograma int Arquivos com mais de 10.000.000 de linhas excluídas.
FileSize[0] Histograma int Arquivos com 0 bytes.
FileSize[1,1KiB) Histograma int Arquivos de 1 byte para menos de 1 KiB.
FileSize[1KiB,16KiB) Histograma int Arquivos de 1 KiB a menos de 16 KiB.
FileSize[16KiB,256KiB) Histograma int Arquivos de 16 KiB a menos de 256 KiB.
FileSize[256KiB,4MiB) Histograma int Arquivos de 256 KiB a menos de 4 MiB.
FileSize[4MiB,64MiB) Histograma int Arquivos de 4 MiB a menos de 64 MiB.
FileSize[64MiB,1GiB) Histograma int Arquivos de 64 MiB para menos de 1 GiB.
FileSize[1GiB,16GiB) Histograma int Arquivos de 1 GiB a menos de 16 GiB.
FileSize[16GiB+) Histograma int Arquivos maiores que 16 GiB.

Códigos potenciais de tipo de anomalia

A PotentialAnomalyType coluna retorna um dos seguintes códigos inteiros:

Code AnomaliaPotencial Descrição Condição Ação recomendada
0 None Nenhuma anomalia detectada. O layout do arquivo da tabela está dentro dos parâmetros aceitáveis para o motor endpoint de análise SQL. Nenhuma ação é necessária.
1 Estatísticas de arquivos inválidas Os metadados do arquivo são inconsistentes ou corrompidos. O procedimento não consegue avaliar de forma confiável a saúde da mesa. Investigue o registro Delta da mesa. Execute novamente a ingestão ou execute OPTIMIZE para gerar metadados do arquivo.
2 Muitas linhas excluídas Uma proporção significativa das linhas entre arquivos é marcada como excluída, mas não fisicamente removida. Execute OPTIMIZE a mesa a partir de um caderno Spark ou contexto Lakehouse para reescrever arquivos sem linhas deletadas.
3 Muitos arquivos pequenos Uma grande proporção de arquivos está abaixo do limite de tamanho ideal para o motor SQL. Execute OPTIMIZE na mesa para compactar arquivos pequenos em arquivos maiores. Considere ajustar o tamanho dos lotes de ingestão a montante.
4 Sem posto de controle recente O checkpoint da tabela Delta está obsoleto em relação ao log de transações. Execute OPTIMIZE ou acione manualmente um ponto de controle a partir do Spark.

Note

O procedimento relata apenas um tipo de anomalia por execução. Se existirem múltiplas anomalias, o procedimento retorna a de maior gravidade. Faça a manutenção e execute o procedimento novamente para verificar possíveis problemas adicionais.

Interpretar os resultados

Se a PotentialAnomalyType coluna tiver um valor diferente de zero, o procedimento detectou uma anomalia na tabela. O procedimento armazenado analisa a tabela de destino e fornece um diagnóstico baseado em parâmetros ideais para o motor Fabric Data Warehouse. A PotentialAnomalyDescription coluna fornece uma descrição da anomalia detectada, mas talvez você precise de uma interpretação mais ampla dos resultados para melhor contexto.

Use as colunas do histograma para entender se o layout físico do arquivo da tabela está próximo da forma esperada para o desempenho de consultas do Data Warehouse. Uma tabela saudável geralmente tem a maioria dos arquivos nessa FileRowCount[1M,10M) faixa, com a contagem média de linhas próxima a 2 milhões de linhas por arquivo. Se a maioria dos arquivos estiver em caixas de menor número de linhas, como FileRowCount[1k,10k), FileRowCount[10k,100k), ou FileRowCount[100k,1M), a tabela pode conter muitos arquivos subdimensionados. Essa condição pode aumentar o planejamento de consultas e a sobrecarga de abertura de arquivos, pois o motor SQL precisa ler de muitos arquivos pequenos em vez de poucos arquivos maiores.

Para tamanho de arquivo, uma tabela saudável deve ter a maioria dos arquivos próxima da média alvo de 1,2 GB por arquivo. No histograma, os arquivos devem se concentrar em FileSize[1GiB,16GiB), com alguns arquivos em FileSize[64MiB,1GiB) dependendo dos padrões de ingestão e do tamanho da tabela. Se muitos arquivos aparecem em caixas menores, especialmente FileSize[1KiB,16KiB), FileSize[16KiB,256KiB), FileSize[256KiB,4MiB), ou FileSize[4MiB,64MiB), a tabela provavelmente tem um problema de arquivos pequenos e pode se beneficiar da compactação.

Arquivos muito grandes também podem reduzir o desempenho e a flexibilidade operacional. Se muitos arquivos aparecerem em FileSize[16GiB+), ou se o tamanho médio dos arquivos for maior que o alvo de 1,2 GB do warehouse, a tabela pode ter arquivos excessivamente grandes. Arquivos grandes podem reduzir o paralelismo porque há menos arquivos disponíveis para o trabalho de varredura distribuída, e podem tornar operações de manutenção, como reescritas ou compactação, mais caras. O melhor layout geralmente é uma distribuição balanceada em torno do tamanho do arquivo alvo, em vez de muitos arquivos pequenos ou um pequeno número de arquivos grandes.

Use as colunas de resumo para calcular médias em nível de tabela:

  • Média de linhas por arquivo = PhysicalRowCount / FileCount
  • Tamanho médio do arquivo = FileSizeInBytes / FileCount

Compare essas médias com as metas do Data Warehouse. Uma contagem média de linhas inferior a 2 milhões de linhas por arquivo, ou um tamanho médio de arquivo inferior a 1,2 GB, indica padrões de fragmentação ou ingestão que produzem arquivos pequenos demais para um processamento eficiente de consultas SQL. Executar OPTIMIZE pode compactar arquivos menores em arquivos maiores e melhorar a eficiência da varredura.

Métricas de linhas excluídas indicam se é necessária manutenção para remover linhas logicamente excluídas. Uma tabela saudável deve ter a maioria dos arquivos em FileDeletedRowCount[0], e DeletedRowCount deve ser baixa em relação a PhysicalRowCount. Se as linhas deletadas estiverem concentradas em bins mais altos, como FileDeletedRowCount[100k,1M), FileDeletedRowCount[1M,10M), ou FileDeletedRowCount[10M+), o motor SQL deve pular muitas linhas excluídas em tempo de leitura, o que pode reduzir o desempenho da consulta. Executar OPTIMIZE reescritas afeta arquivos e remove fisicamente linhas excluídas.

Note

Linhas deletadas e versões antigas de arquivos podem ser necessárias para a viagem no tempo do Delta Lake. A execução OPTIMIZE pode reescrever arquivos para melhorar o layout atual da tabela, mas versões históricas permanecem disponíveis até que excedam o período de retenção configurado e sejam removidas por VACUUM. Antes de executar VACUUM, confirme se o período de retenção ainda suporta os cenários necessários de viagem no tempo, rollback e auditoria. Remover arquivos antigos pode limitar permanentemente as versões das tabelas disponíveis para viagens no tempo.

Permissões

O chamador deve ter pelo menos VIEW permissão DEFINITION na tabela de destino através do endpoint de análise SQL.

Observações

  • O ponto de extremidade de análise do SQL é somente leitura. Você não pode rodar OPTIMIZE diretamente do endpoint de análise SQL. Use um caderno Spark, contexto Lakehouse ou um pipeline de dados Fabric para executar operações de manutenção. Para um tutorial, veja Tutorial: Otimize tabelas Lakehouse com base em checagens de saúde.
  • O procedimento inspeciona apenas metadados em nível de arquivo. Não realiza análise em nível de grupo de linhas.
  • Para tabelas sem arquivos de dados (tabelas vazias), o procedimento retorna um conjunto de resultados com todos os valores do histograma definidos como 0 e PotentialAnomalyType definidos como 0.

Examples

A. Verifique a saúde de uma única tabela

EXEC sys.sp_get_table_health_metrics @table_name = 'dbo.WebClickstreamEvents';

B. Use a sintaxe dos parâmetros posicionais

EXEC sys.sp_get_table_health_metrics 'sales.SalesOrderFacts';

Próxima etapa