Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Следите за работоспособностью материализованного представления следующими способами:
- Отслеживайте материализованные метрики представлений на портале Azure с Azure Monitor. Используйте материализованную метрику возраста,
MaterializedViewAgeSeconds
, в качестве основной метрики для отслеживания свежести представления.
- Отслеживайте материализованные метрики представления в рабочей области Microsoft Fabric. Используйте материализованную метрику возраста,
MaterializedViewAgeSeconds
в качестве основной метрики для отслеживания свежести представления. Дополнительные сведения см. в статье Включение мониторинга врабочей области.
Отслеживайте свойство
IsHealthy
с помощью.show materialized-view
.Проверьте наличие сбоев с помощью
.show materialized-view failures
.
Примечание.
Материализация никогда не пропускает какие-либо данные, даже если возникают постоянные сбои. Представление всегда гарантирует получение самого актуального моментального снимка запроса на основе всех записей в исходной таблице. Константные сбои значительно ухудшают производительность запросов, но не вызывают неправильных результатов в представлении запросов.
Устранение неполадок неработоспособных материализованных представлений
Если метрика MaterializedViewAge
постоянно увеличивается, а метрика MaterializedViewHealth
показывает, что представление неработоспособно, выполните следующие рекомендации, чтобы определить первопричину:
Проверьте количество материализованных представлений в кластере и текущую емкость для материализованных представлений:
.show capacity | where Resource == "MaterializedView" | project Resource, Total, Consumed
выходных
Ресурс Итог Потребляется Материализованныйview 1 0 - Количество материализованных представлений, которые могут выполняться одновременно, зависит от емкости, показанной в столбце
Total
, а в столбцеConsumed
отображается количество материализованных представлений, выполняемых в настоящее время. Вы можете использовать политику емкости Материализованных представлений, чтобы указать минимальное и максимальное количество параллельных операций, переопределяя уровень параллелизма по умолчанию системы. Система определяет текущую параллельность, показанную вTotal
на основе доступных ресурсов кластера. Следующий пример переопределяет решение системы и изменяет минимальные параллельные операции с одного на три:
.alter-merge cluster policy capacity '{ "MaterializedViewsCapacity": { "ClusterMinimumConcurrentOperations": 3 } }'
- Если вы явно измените эту политику, отслеживайте работоспособность кластера и убедитесь, что другие рабочие нагрузки не затронуты этим изменением.
- Количество материализованных представлений, которые могут выполняться одновременно, зависит от емкости, показанной в столбце
Проверьте, возникают ли сбои во время процесса материализации с помощью .show материализованные сбои представления.
- Если ошибка является постоянной, система автоматически отключает материализованное представление. Чтобы проверить, отключен ли он, используйте команду .show materialized-view и проверьте,
false
ли значение в столбцеIsEnabled
. Затем проверьте журнала для отключенного события с помощью команды .show journal. Примером постоянного сбоя является изменение схемы исходной таблицы, что делает его несовместимым с материализованным представлением. Дополнительные сведения см. в разделе .create materialized-view command. - Если сбой временный, система автоматически повторяет операцию. Однако сбой может отложить материализацию и увеличить возраст материализованного представления. Этот тип сбоя возникает, например, при достижении ограничений памяти или времени ожидания запроса. Дополнительные сведения об устранении временных сбоев см. в следующих рекомендациях.
- Если ошибка является постоянной, система автоматически отключает материализованное представление. Чтобы проверить, отключен ли он, используйте команду .show materialized-view и проверьте,
Анализ процесса материализации с помощью команды .show commands-and-queries. Замените имя базы данных и ViewName для фильтрации для определенного представления:
.show commands-and-queries | where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"
Проверьте потребление памяти в столбце
MemoryPeak
, чтобы определить все операции, которые завершилися ошибкой из-за попадания ограничений памяти, например запросов запуска. По умолчанию процесс материализации ограничен пиком памяти в 15 ГБ на узел. Если запросы или команды, выполняемые во время процесса материализации, превышают это значение, материализация завершается ошибкой из-за ограничений памяти. Чтобы увеличить пик памяти на узел, измените группу рабочих нагрузок $materialized представления. Следующий пример изменяет группу рабочих нагрузок материализованных представлений, чтобы использовать максимум 64 ГБ памяти на узел во время материализации:.alter-merge workload_group ['$materialized-views'] ``` { "RequestLimitsPolicy": { "MaxMemoryPerQueryPerNode": { "Value": 68719241216 } } }
Примечание.
MaxMemoryPerQueryPerNode
не может превышать 50% общего объема памяти, доступной на каждом узле.Проверьте, попадает ли процесс материализации в холодный кэш. В следующем примере показана статистика кэша за последний день для материализованного представления,
ViewName
:.show commands-and-queries | where ClientActivityId startswith "DN.MaterializedViews;ViewName" | where StartedOn > ago(1d) | extend HotCacheHits = tolong(CacheStatistics.Shards.Hot.HitBytes), HotCacheMisses = tolong(CacheStatistics.Shards.Hot.MissBytes), HotCacheRetrieved = tolong(CacheStatistics.Shards.Hot.RetrieveBytes), ColdCacheHits = tolong(CacheStatistics.Shards.Cold.HitBytes), ColdCacheMisses = tolong(CacheStatistics.Shards.Cold.MissBytes), ColdCacheRetrieved = tolong(CacheStatistics.Shards.Cold.RetrieveBytes) | summarize HotCacheHits = format_bytes(sum(HotCacheHits)), HotCacheMisses = format_bytes(sum(HotCacheMisses)), HotCacheRetrieved = format_bytes(sum(HotCacheRetrieved)), ColdCacheHits =format_bytes(sum(ColdCacheHits)), ColdCacheMisses = format_bytes(sum(ColdCacheMisses)), ColdCacheRetrieved = format_bytes(sum(ColdCacheRetrieved))
выходных
HotCacheHits HotCacheMisses HotCacheRetrieved ColdCacheHits ColdCacheMisses ColdCacheRetrieved 26 ГБ 0 байт 0 байт 1 ГБ 0 байт 866 МБ Если представление не полностью в горячем кэше, материализация может столкнуться с отсутствием диска, значительно замедляя процесс.
Увеличение политики кэширования для материализованного представления помогает избежать промахов кэша. Дополнительные сведения см. в разделе горячего и холодного кэша и политики кэширования и .alter materialized-view policy кэширование.
Проверьте, сканирует ли материализация старые записи, проверив
ScannedExtentsStatistics
с помощью команды .show запросов. Если количество сканированных экстентов высоко иMinDataScannedTime
старое, цикл материализации должен сканировать все или большую часть материализованных части представления. Сканирование необходимо для поиска пересечений с разностным . Дополнительные сведения о разностных и материализованной части см. в разделе Как материализованные представления работают. Следующие рекомендации позволяют уменьшить объем данных, сканируемых в материализованных циклах, свести к минимуму пересечение с разностными.
Если цикл материализации сканирует большое количество данных, потенциально включая холодный кэш, рассмотрите возможность внесения следующих изменений в определение материализованного представления:
- Включите в определение представления ключ
datetime
по группам. Это может значительно уменьшить объем отсканированных данных, , если в этомстолбце нет поздних поступающих данных. Дополнительные сведения см. в советы по повышению производительности. Необходимо создать новое материализованное представление, так как обновления для ключей группирования не поддерживаются. - Используйте
lookback
в рамках определения представления. Дополнительные сведения см. в разделе .create materialized view, поддерживаемые свойствами.
- Включите в определение представления ключ
- Проверьте, достаточно ли емкости приема, проверяя, отображает ли метрика
MaterializedViewResult
или Metric IngestionUtilization отображать значенияInsufficientCapacity
. Вы можете увеличить емкость приема, масштабируя доступные ресурсы (предпочтительный) или изменяя политику приема емкости.
- Проверьте, есть ли достаточно емкости приема, проверяя, отображает ли метрика
MaterializedViewResult
InsufficientCapacity
. Вы можете увеличить емкость приема, масштабируя доступные ресурсы.
Если материализованное представление по-прежнему неработоспособно, служба не имеет достаточной емкости или ресурсов для материализации всех данных вовремя. Рассмотрим следующие варианты:
- Горизонтальное масштабирование кластера путем увеличения минимального количества экземпляров. оптимизированное автомасштабирование не учитывает материализованные представления и не масштабируется автоматически, если материализованные представления неработоспособны. Необходимо задать минимальное количество экземпляров, чтобы предоставить кластеру больше ресурсов для размещения материализованных представлений.
- Масштабируйте хранилище событий, чтобы предоставить ему дополнительные ресурсы для размещения материализованных представлений. Дополнительные сведения см. в разделе Включение минимальногопотребления.
- Разделите материализованное представление на несколько небольших представлений, каждый из которых охватывает подмножество данных. Например, их можно разделить на основе ключа высокой кратности из материализованных ключей представления по группам. Все представления основаны на одной исходной таблице, и каждый фильтр представлений по
SourceTable | where hash(key, number_of_views) == i
, гдеi
входит в набор{0,1,…,number_of_views-1}
. Затем можно определить хранимую функцию , которая профсоюзы все небольшие материализованные представления. Используйте эту функцию в запросах для доступа к объединенным данным.
Разделение представления может увеличить использование ЦП, что снижает пик памяти в циклах материализации. Уменьшение пиковой нагрузки памяти может помочь, если одно представление завершается ошибкой из-за ограничений памяти.
Метрика MaterializedViewResult
Метрика MaterializedViewResult
предоставляет сведения о результате цикла материализации и может использоваться для выявления проблем в состоянии работоспособности материализованного представления. Метрика включает Database
и MaterializedViewName
Result
измерение.
Измерение Result
может иметь одно из следующих значений:
успех: материализация завершена успешно.
SourceTableNotFound: исходная таблица материализованного представления была удалена, поэтому материализованное представление отключается автоматически.
SourceTableSchemaChange: схема исходной таблицы изменилась так, как не совместима с определением материализованного представления. Так как материализованный запрос представления больше не соответствует схеме материализованного представления, материализованное представление отключается автоматически.
- Недостаточный объем: экземпляр не имеет достаточной емкости для материализации материализованного представления из-за нехватки емкости приема. Хотя сбои емкости могут быть временными, если они часто повторяются, попробуйте выполнить масштабирование экземпляра или увеличить соответствующую емкость в политике.
- Недостаточный объем: экземпляр не имеет достаточной емкости для материализации материализованного представления из-за нехватки емкости приема. Хотя сбои емкости могут быть временными, если они часто повторяются, попробуйте масштабировать экземпляр или увеличить емкость. Дополнительные сведения см. в разделе Планирование размера емкости.
- Недостаточно ресурсов: база данных не имеет достаточных ресурсов (ЦП/памяти), чтобы материализовать материализованное представление. Хотя ошибки ресурсов могут быть временными, если они часто повторяются, попробуйте увеличить или увеличить масштаб. Дополнительные идеи см. в разделе Устранение неполадок с неработоспособными материализованными представлениями.
Материализованные представления в базах данных подписчиков
Материализованные представления можно определить в базах данных подписчиков. Однако мониторинг этих материализованных представлений должен основываться на базе данных лидера, где определяется материализованное представление. В частности:
-
Метрики , связанные с материализованным выполнением представления (
MaterializedViewResult
,MaterializedViewExtentsRebuild
), присутствуют только в базе данных лидера. Метрики, связанные с мониторингом (MaterializedViewAgeSeconds
,MaterializedViewHealth
,MaterializedViewRecordsInDelta
) также отображаются в базах данных подписчиков.
Отслеживание потребления ресурсов
Использование ресурсов материализованных представлений: ресурсы, используемые материализованным процессом материализации представлений .show commands-and-queries
, можно отслеживать с помощью команды. Фильтрация записей для определенного представления с помощью следующих элементов (замена DatabaseName
и ViewName
):
.show commands-and-queries
| where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"
Связанное содержимое
- материализованные представления
- варианты использования материализованных представлений