구체화된 보기 모니터링
다음과 같은 방법으로 구체화된 뷰의 상태를 모니터링합니다.
- 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
구체화 주기의 결과에 대한 정보를 제공하며 구체화된 뷰 상태 상태 문제를 식별하는 데 사용할 수 있습니다. 메트릭에는 및 MaterializedViewName
Result
차원이 포함됩니다Database
.
차원에는 Result
다음 값 중 하나가 있을 수 있습니다.
성공: 구체화가 성공적으로 완료되었습니다.
SourceTableNotFound: 구체화 뷰의 원본 테이블이 삭제되었습니다. 구체화된 뷰는 결과적으로 자동으로 비활성화됩니다.
SourceTableSchemaChange: 구체화된 뷰 정의와 호환되지 않는 방식으로 원본 테이블의 스키마가 변경되었습니다(구체화된 뷰 쿼리는 구체화된 뷰 스키마와 일치하지 않음). 구체화된 뷰는 결과적으로 자동으로 비활성화됩니다.
InsufficientCapacity: 클러스터에 구체화된 뷰를 구체화할 수 있는 충분한 용량이 없습니다. 이는 수집 용량 누락 또는 구체화된 뷰 용량 누락을 나타낼 수 있습니다. 용량 부족 오류는 일시적일 수 있지만 다시 발생하는 경우 클러스터를 스케일 아웃하거나 정책에서 관련 용량을 늘리는 것이 좋습니다.
InsufficientResources: 클러스터에 구체화된 뷰를 구체화할 수 있는 충분한 리소스(CPU/메모리)가 없습니다. 이 오류는 일시적일 수 있지만 다시 발생하는 경우 클러스터를 확장하거나 확장해 보세요.
- 구체화 프로세스가 메모리 제한에 도달하면 더 많은 메모리 또는 CPU를 지원하기 위해 $materialized 보기 워크로드 그룹 제한을 늘릴 수 있습니다.
예를 들어 다음 명령은 구체화된 뷰 워크로드 그룹을 변경하여 구체화하는 동안 노드당 최대 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;"
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기