Compartilhar via


Monitorar exibições materializadas

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

Monitore a integridade da exibição materializada das seguintes maneiras:

  • Monitore métricas de exibição materializadas no portal do Azure.
    • A métrica MaterializedViewAgeSeconds de idade da exibição materializada deve ser usada para monitorar a atualização da exibição. Esta deve ser a principal métrica a ser monitorada.

Observação

A materialização nunca ignora nenhum dado, mesmo que haja falhas constantes. A exibição sempre tem a garantia de retornar o instantâneo mais atualizado da consulta, com base em todos os registros na tabela de origem. Falhas constantes degradarão significativamente o desempenho da consulta, mas não causarão resultados incorretos em consultas de exibição.

Solução de problemas de exibições materializadas não íntegras

A MaterializedViewHealth métrica indica se uma exibição materializada está íntegra. Antes que uma exibição materializada se torne insalubre, sua idade, observada pela MaterializedViewAgeSeconds métrica, aumenta gradualmente.

Uma exibição materializada pode se tornar não íntegra por qualquer um ou todos os seguintes motivos:

  • O processo de materialização está falhando. A métrica MaterializedViewResult e o .show materialized-view failures comando podem ajudar a identificar a causa raiz da falha.
  • O sistema pode ter desabilitado automaticamente a exibição materializada, devido a alterações na tabela de origem. Você pode verificar se a exibição está desabilitada verificando a coluna retornada IsEnabled do .show materialized-view comando. Veja mais detalhes em exibições materializadas, limitações e problemas conhecidos
  • O banco de dados não tem capacidade suficiente para materializar todos os dados de entrada no prazo. Nesse caso, pode não haver falhas na execução. No entanto, a idade da visualização aumenta gradualmente, pois não é capaz de acompanhar a taxa de ingestão. Pode haver várias causas principais para essa situação:
    • Há exibições mais materializadas no banco de dados e o banco de dados não tem capacidade suficiente para executar todas as exibições. Consulte a política de capacidade de exibição materializada para alterar as configurações padrão para o número de exibições materializadas executadas simultaneamente.
    • A materialização é lenta porque os dados recém-ingeridos se cruzam com uma grande parte da exibição e há muitos registros a serem atualizados em cada ciclo de materialização. Para saber mais sobre por que isso afeta o desempenho da exibição, confira como as exibições materializadas funcionam.

Métrica MaterializedViewResult

A MaterializedViewResult métrica fornece informações sobre o resultado de um ciclo de materialização e pode ser usada para identificar problemas no status de integridade da exibição materializada. A métrica inclui o Database e MaterializedViewName e uma Result dimensão.

A Result dimensão pode ter um dos seguintes valores:

  • Sucesso: materialização concluída com êxito.

  • SourceTableNotFound: a tabela de origem da exibição de materialização foi descartada. Como resultado, a exibição materializada é desativada automaticamente.

  • SourceTableSchemaChange: o esquema da tabela de origem foi alterado de uma forma que não é compatível com a definição de exibição materializada (a consulta de exibição materializada não corresponde ao esquema de exibição materializada). Como resultado, a exibição materializada é desativada automaticamente.

  • InsufficientCapacity: o banco de dados não tem capacidade suficiente para materializar a exibição materializada. Isso pode indicar capacidade de ingestão ausente ou capacidade de exibições materializadas ausentes. Falhas de capacidade insuficiente podem ser transitórias, mas se ocorrerem com frequência, recomendamos escalar horizontalmente o banco de dados ou aumentar a capacidade relevante na política.

  • InsufficientResources: o banco de dados não tem recursos suficientes (CPU/memória) para materializar a exibição materializada. Essa falha pode ser transitória, mas se ocorrer novamente, tente escalar ou reduzir verticalmente o banco de dados.

    • Se o processo de materialização atingir os limites de memória, os limites do grupo de carga de trabalho de $materialized exibições poderão ser aumentados para dar suporte a mais memória ou CPU para o processo de materialização consumir.

    Por exemplo, o comando a seguir alterará o grupo de cargas de trabalho de exibições materializadas para usar um máximo de 64 gigabytes (GB) de memória por nó durante a materialização (o valor padrão é 15 GB):

    .alter-merge workload_group ['$materialized-views'] ```
    {
      "RequestLimitsPolicy": {
        "MaxMemoryPerQueryPerNode": {
          "Value": 68719241216
        }
      }
    } ```
    

    Observação

    MaxMemoryPerQueryPerNode não pode ser definido como mais de 50% da memória total de cada nó.

Visualizações materializadas em bancos de dados de seguidores

As exibições materializadas podem ser definidas em bancos de dados de seguidores. No entanto, o monitoramento dessas visões materializadas deve ser baseado no banco de dados líder, onde a visão materializada é definida. Especificamente:

  • As métricas relacionadas à execução da exibição materializada (MaterializedViewResult, MaterializedViewExtentsRebuild) estão presentes apenas no banco de dados líder. As métricas relacionadas ao monitoramento (MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta) também aparecerão nos bancos de dados de seguidores.
  • O comando .show materialized-view failures só funciona no banco de dados líder.

Acompanhe o consumo de recursos

Consumo de recursos de visualizações materializadas: os recursos consumidos pelo processo de materialização de visualizações materializadas podem ser rastreados usando o .show commands-and-queries comando. Filtre os registros de uma exibição específica usando o seguinte (substitua DatabaseName e ViewName):

.show commands-and-queries 
| where Database  == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"