Мониторинг материализованных представлений
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Следите за работоспособностью материализованного представления следующими способами:
- Отслеживайте материализованные метрики представления в портал Azure.
- Материализованное представление возрастной метрики
MaterializedViewAgeSeconds
следует использовать для отслеживания свежести представления. Это должна быть основная метрика для мониторинга.
- Материализованное представление возрастной метрики
- Отслеживайте
IsHealthy
возвращаемое.show materialized-view
свойство. - Проверьте наличие сбоев с помощью
.show materialized-view failures
.
Примечание.
Материализация никогда не пропускает какие-либо данные, даже если возникают постоянные сбои. Представление всегда гарантирует получение самого актуального моментального снимка запроса на основе всех записей в исходной таблице. Константные сбои значительно ухудшают производительность запросов, но не вызывают неправильных результатов в представлении запросов.
Устранение неполадок неработоспособных материализованных представлений
MaterializedViewHealth
Метрика указывает, является ли материализованное представление работоспособным. Прежде чем материализованное представление становится неработоспособным, его возраст, отмеченный MaterializedViewAgeSeconds
метрикой, постепенно увеличивается.
Материализованное представление может стать неработоспособным по любым или всем следующим причинам:
- Процесс материализации завершается ошибкой. Метрика MaterializedViewResult и
.show materialized-view failures
команда могут помочь определить первопричину сбоя. - Система, возможно, автоматически отключила материализованное представление из-за изменений в исходной таблице. Вы можете проверить, отключается ли представление, проверив столбец,
IsEnabled
возвращенный командой.show materialized-view
. Дополнительные сведения об ограничениях материализованных представлений и известных проблемах - База данных не имеет достаточной емкости для материализации всех входящих данных вовремя. В этом случае в выполнении могут не возникать сбои. Однако возраст представления постепенно увеличивается, так как он не в состоянии следить за скоростью приема. В этой ситуации может быть несколько первопричин:
- В базе данных есть более материализованные представления, и база данных не имеет достаточной емкости для выполнения всех представлений. См. политику емкости материализованного представления, чтобы изменить параметры по умолчанию для количества материализованных представлений, выполняемых одновременно.
- Материализация медленна, так как только что приема данных пересекается с большой частью представления, и в каждом цикле материализации существует множество записей. Дополнительные сведения о том, почему это влияет на производительность представления, см . сведения о работе материализованных представлений.
Метрика MaterializedViewResult
MaterializedViewResult
Метрика содержит сведения о результатах цикла материализации и может использоваться для выявления проблем в состоянии работоспособности материализованного представления. Метрика включает Database
и MaterializedViewName
Result
измерение.
Измерение Result
может иметь одно из следующих значений:
Успех: Материализация успешно завершена.
SourceTableNotFound: исходная таблица представления материализации была удалена. Материализованное представление автоматически отключается в результате.
SourceTableSchemaChange: схема исходной таблицы изменилась так, как не совместима с определением материализованного представления (материализованный запрос представления не соответствует схеме материализованного представления). Материализованное представление автоматически отключается в результате.
Недостаточный объем. База данных не имеет достаточной емкости для материализации материализованного представления. Это может указывать на отсутствие емкости приема или отсутствие емкости материализованных представлений. Недостаточные сбои емкости могут быть временными, но если они часто повторяются, рекомендуется масштабировать базу данных или увеличивать соответствующую емкость в политике.
Недостаточно ресурсов: база данных не имеет достаточных ресурсов (ЦП/памяти), чтобы материализовать материализованное представление. Этот сбой может быть временным, но если он повторно выполняет попытку масштабирования базы данных вверх или из нее.
- Если процесс материализации достигает ограничений памяти, ограничения группы рабочих нагрузок $materialized-представления можно увеличить, чтобы поддерживать больше памяти или ЦП для используемого процесса материализации.
Например, следующая команда изменит группу рабочих нагрузок материализованных представлений, чтобы использовать максимум 64 гигабайт (ГБ) памяти на узел во время материализации (значение по умолчанию составляет 15 ГБ):
.alter-merge workload_group ['$materialized-views'] ``` { "RequestLimitsPolicy": { "MaxMemoryPerQueryPerNode": { "Value": 68719241216 } } } ```
Примечание.
MaxMemoryPerQueryPerNode не может быть задано более 50 % от общего объема памяти каждого узла.
Материализованные представления в базах данных подписчиков
Материализованные представления можно определить в базах данных подписчиков. Однако мониторинг этих материализованных представлений должен основываться на базе данных лидера, где определяется материализованное представление. В частности:
- Метрики , связанные с материализованным выполнением представления (
MaterializedViewResult
,MaterializedViewExtentsRebuild
), присутствуют только в базе данных лидера. Метрики, связанные с мониторингом (MaterializedViewAgeSeconds
,MaterializedViewHealth
, ),MaterializedViewRecordsInDelta
также будут отображаться в базах данных подписчиков.
Отслеживание потребления ресурсов
Использование ресурсов материализованных представлений: ресурсы, используемые материализованным процессом материализации представлений .show commands-and-queries
, можно отслеживать с помощью команды. Фильтрация записей для определенного представления с помощью следующих элементов (замена DatabaseName
и ViewName
):
.show commands-and-queries
| where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"