Compartir a través de


Supervisión de vistas materializadas

Se aplica a: ✅Microsoft FabricAzure Data Explorer

Supervise el estado de la vista materializada de las maneras siguientes:

  • Supervise las métricas de vista materializadas en Azure Portal.
    • La métrica MaterializedViewAgeSeconds de antigüedad de la vista materializada debe usarse para supervisar la actualización de la vista. Esta debe ser la métrica principal que se va a supervisar.

Nota:

La materialización nunca omite ningún dato, incluso si hay errores constantes. Siempre se garantiza que la vista devuelva la instantánea más actualizada de la consulta, en función de todos los registros de la tabla de origen. Los errores constantes degradarán significativamente el rendimiento de las consultas, pero no provocarán resultados incorrectos en las consultas de vista.

Solución de problemas de vistas materializadas incorrectas

La MaterializedViewHealth métrica indica si una vista materializada es correcta. Antes de que una vista materializada sea incorrecta, su edad, indicada por la MaterializedViewAgeSeconds métrica, aumenta gradualmente.

Una vista materializada puede volverse incorrecta por cualquiera de las razones siguientes o todas las siguientes:

  • Se produce un error en el proceso de materialización. La métrica MaterializedViewResult y el .show materialized-view failures comando pueden ayudar a identificar la causa principal del error.
  • Es posible que el sistema haya deshabilitado automáticamente la vista materializada, debido a cambios en la tabla de origen. Puede comprobar si la vista está deshabilitada comprobando la columna devuelta desde .show materialized-view el IsEnabled comando . Consulte más detalles en limitaciones de vistas materializadas y problemas conocidos.
  • La base de datos no tiene capacidad suficiente para materializar todos los datos entrantes a tiempo. En este caso, puede que no haya errores en la ejecución. Sin embargo, la edad de la vista aumenta gradualmente, ya que no es capaz de mantenerse al día con la tasa de ingesta. Puede haber varias causas principales para esta situación:
    • Hay vistas más materializadas en la base de datos y la base de datos no tiene capacidad suficiente para ejecutar todas las vistas. Consulte la directiva de capacidad de vista materializada para cambiar la configuración predeterminada del número de vistas materializadas ejecutadas simultáneamente.
    • La materialización es lenta porque los datos recién ingeridos se cruzan con una gran parte de la vista y hay muchos registros que actualizar en cada ciclo de materialización. Para obtener más información sobre por qué afecta al rendimiento de la vista, consulte cómo funcionan las vistas materializadas.

Métrica MaterializedViewResult

La MaterializedViewResult métrica proporciona información sobre el resultado de un ciclo de materialización y se puede usar para identificar problemas en el estado de mantenimiento de la vista materializada. La métrica incluye y Database y MaterializedViewName una Result dimensión.

La Result dimensión puede tener uno de los siguientes valores:

  • Correcto: la materialización se completó correctamente.

  • SourceTableNotFound: se quitó la tabla de origen de la vista de materialización. La vista materializada se deshabilita automáticamente como resultado.

  • SourceTableSchemaChange: el esquema de la tabla de origen ha cambiado de forma que no sea compatible con la definición de vista materializada (la consulta de vista materializada no coincide con el esquema de vista materializado). La vista materializada se deshabilita automáticamente como resultado.

  • InsufficientCapacity: la base de datos no tiene capacidad suficiente para materializar la vista materializada. Esto puede indicar que falta la capacidad de ingesta o que falta la capacidad de vistas materializadas. Los errores de capacidad insuficientes pueden ser transitorios, pero si a menudo se recomienda escalar horizontalmente la base de datos o aumentar la capacidad pertinente en la directiva.

  • InsufficientResources: la base de datos no tiene recursos suficientes (CPU/memoria) para materializar la vista materializada. Este error puede ser transitorio, pero si vuelve a intentar escalar o reducir verticalmente la base de datos.

    • Si el proceso de materialización alcanza los límites de memoria, se pueden aumentar los límites del grupo de cargas de trabajo de vistas de $materialized para admitir más memoria o CPU para que el proceso de materialización lo consuma.

    Por ejemplo, el siguiente comando modificará el grupo de cargas de trabajo vistas materializadas para usar un máximo de 64 gigabytes (GB) de memoria por nodo durante la materialización (el valor predeterminado es 15 GB):

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

    Nota:

    MaxMemoryPerQueryPerNode no se puede establecer en más del 50 % de la memoria total de cada nodo.

Vistas materializadas en bases de datos de seguidor

Las vistas materializadas se pueden definir en bases de datos de seguidor. Sin embargo, la supervisión de estas vistas materializadas debe basarse en la base de datos líder, donde se define la vista materializada. Específicamente:

  • Las métricas relacionadas con la ejecución de vistas materializadas (MaterializedViewResult, MaterializedViewExtentsRebuild) solo están presentes en la base de datos líder. Las métricas relacionadas con la supervisión (MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta) también aparecerán en las bases de datos del seguidor.
  • El comando .show materialized-view failures solo funciona en la base de datos líder.

Seguimiento del consumo de recursos

Consumo de recursos de vistas materializadas: los recursos consumidos por el proceso de materialización de vistas materializadas se pueden realizar mediante el .show commands-and-queries comando . Filtre los registros de una vista específica mediante lo siguiente (reemplace DatabaseName y ViewName):

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