Supervisión de vistas materializadas

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

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 está en buen estado. Antes de que una vista materializada se vuelva incorrecta, su antigüedad, anotada por la MaterializedViewAgeSeconds métrica, aumenta gradualmente.

Una vista materializada puede ser 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 IsEnabled columna devuelta desde .show materialized-view el comando . Consulte más detalles sobre las limitaciones de las vistas materializadas y los problemas conocidos.
  • El clúster no tiene capacidad suficiente para materializar todos los datos entrantes a tiempo. En este caso, es posible 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 el clúster y el clúster 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 hay demasiados registros para actualizar en cada ciclo de materialización. Para obtener más información sobre por qué esto afecta al rendimiento de la vista, consulte cómo funcionan las vistas materializadas. El número de extensiones que requieren actualizaciones en cada ciclo se proporciona en la MaterializedViewExtentsRebuild métrica.

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 DatabaseMaterializedViewName y 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 una manera que no es 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: el clúster no tiene capacidad suficiente para materializar la vista materializada. Esto puede indicar que falta capacidad de ingesta o falta capacidad de vistas materializadas. Los errores de capacidad insuficientes pueden ser transitorios, pero si a menudo se recomienda escalar horizontalmente el clúster o aumentar la capacidad pertinente en la directiva.

  • InsufficientResources: El clúster 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 el clúster.

    Por ejemplo, el siguiente comando modificará el grupo de cargas de trabajo de vistas materializadas para usar un máximo de 64 gigabytes (GB) de memoria por nodo durante la materialización (el valor predeterminado es de 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 del seguidor

Las vistas materializadas se pueden definir en las bases de datos del 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. En concreto:

  • 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;"