구체화된 보기 모니터링

다음과 같은 방법으로 구체화된 뷰의 상태를 모니터링합니다.

  • Azure Portal 구체화된 뷰 메트릭을 모니터링합니다.
    • 구체화된 뷰 연령 메트릭 MaterializedViewAgeSeconds 을 사용하여 보기의 새로 고침을 모니터링해야 합니다. 이 메트릭은 모니터링할 기본 메트릭이어야 합니다.
  • 에서 반환된 IsHealthy 속성을 모니터링합니다 .show materialized-view.
  • 를 사용하여 .show materialized-view failures오류를 확인합니다.

참고

구체화는 지속적인 오류가 있더라도 데이터를 건너뛰지 않습니다. 뷰는 항상 원본 테이블의 모든 레코드를 기반으로 쿼리의 최신 스냅샷 반환하도록 보장됩니다. 상수 오류는 쿼리 성능을 크게 저하시키지만 뷰 쿼리에서 잘못된 결과를 초래하지는 않습니다.

비정상 구체화된 뷰 문제 해결

메트릭은 MaterializedViewHealth 구체화된 뷰가 정상인지 여부를 나타냅니다. 구체화된 뷰가 비정상 상태가 되기 전에 메트릭으로 표시된 해당 연령이 MaterializedViewAgeSeconds 점차 증가합니다.

구체화된 뷰는 다음과 같은 이유로 비정상 상태가 될 수 있습니다.

  • 구체화 프로세스가 실패합니다. MaterializedViewResult 메트릭.show materialized-view failures 명령은 오류의 근본 원인을 식별하는 데 도움이 될 수 있습니다.
  • 원본 테이블의 변경으로 인해 시스템에서 구체화된 뷰를 자동으로 사용하지 않도록 설정했을 수 있습니다. 명령에서 .show materialized-view반환된 열을 확인하여 IsEnabled 보기를 사용하지 않도록 설정했는지 검사 수 있습니다. 구체화된 뷰 제한 사항 및 알려진 문제에서 자세한 정보 보기
  • 클러스터에는 들어오는 모든 데이터를 정시에 구체화할 수 있는 충분한 용량이 없습니다. 이 경우 실행 시 오류가 발생하지 않을 수 있습니다. 그러나 수집 속도를 따라갈 수 없기 때문에 보기의 연령이 점차 증가합니다. 이 상황에 대한 몇 가지 근본 원인이 있을 수 있습니다.
    • 클러스터에는 구체화된 뷰가 더 많으며 클러스터에는 모든 보기를 실행할 수 있는 충분한 용량이 없습니다. 동시에 실행되는 구체화된 뷰 수에 대한 기본 설정을 변경하려면 구체화된 뷰 용량 정책을 참조하세요.
    • 구체화 주기마다 업데이트할 레코드가 너무 많기 때문에 구체화 속도가 느립니다. 이것이 보기의 성능에 영향을 미치는 이유에 대해 자세히 알아보려면 구체화된 뷰의 작동 방식을 참조하세요. 각 주기에서 업데이트가 필요한 익스텐트 수는 메트릭에 MaterializedViewExtentsRebuild 제공됩니다.

MaterializedViewResult 메트릭

메트릭은 MaterializedViewResult 구체화 주기의 결과에 대한 정보를 제공하며 구체화된 뷰 상태 상태 문제를 식별하는 데 사용할 수 있습니다. 메트릭에는 및 MaterializedViewNameResult 차원이 포함됩니다Database.

차원에는 Result 다음 값 중 하나가 있을 수 있습니다.

  • 성공: 구체화가 성공적으로 완료되었습니다.

  • SourceTableNotFound: 구체화 뷰의 원본 테이블이 삭제되었습니다. 구체화된 뷰는 결과적으로 자동으로 비활성화됩니다.

  • SourceTableSchemaChange: 구체화된 뷰 정의와 호환되지 않는 방식으로 원본 테이블의 스키마가 변경되었습니다(구체화된 뷰 쿼리는 구체화된 뷰 스키마와 일치하지 않음). 구체화된 뷰는 결과적으로 자동으로 비활성화됩니다.

  • InsufficientCapacity: 클러스터에 구체화된 뷰를 구체화할 수 있는 충분한 용량이 없습니다. 이는 수집 용량 누락 또는 구체화된 뷰 용량 누락을 나타낼 수 있습니다. 용량 부족 오류는 일시적일 수 있지만 다시 발생하는 경우 클러스터를 스케일 아웃하거나 정책에서 관련 용량을 늘리는 것이 좋습니다.

  • InsufficientResources: 클러스터에 구체화된 뷰를 구체화할 수 있는 충분한 리소스(CPU/메모리)가 없습니다. 이 오류는 일시적일 수 있지만 다시 발생하는 경우 클러스터를 확장하거나 확장해 보세요.

    예를 들어 다음 명령은 구체화된 뷰 워크로드 그룹을 변경하여 구체화하는 동안 노드당 최대 64GB의 메모리를 사용합니다(기본값은 15GB).

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

    참고

    MaxMemoryPerQueryPerNode는 각 노드의 총 메모리의 50% 이상으로 설정할 수 없습니다.

팔로워 데이터베이스의 구체화된 뷰

구체화된 뷰는 팔로워 데이터베이스에서 정의할 수 있습니다. 그러나 이러한 구체화된 뷰의 모니터링은 구체화된 뷰가 정의된 리더 데이터베이스를 기반으로 해야 합니다. 특히 다음에 대해 주의하세요.

  • 구체화된 뷰 실행(MaterializedViewResult, MaterializedViewExtentsRebuild)과 관련된 메트릭은 리더 데이터베이스에만 존재합니다. 모니터링(MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta)과 관련된 메트릭도 팔로워 데이터베이스에 표시됩니다.
  • .show materialized-view failures 명령은 리더 데이터베이스에서만 작동합니다.

리소스 사용량 추적

구체화된 뷰 리소스 사용량: 구체화된 뷰 구체화 프로세스에서 사용하는 리소스는 명령을 사용하여 .show commands-and-queries 추적할 수 있습니다. 다음(및 ViewName바꾸기DatabaseName)을 사용하여 특정 보기에 대한 레코드를 필터링합니다.

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