Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer
Monitoruj kondycję zmaterializowanego widoku w następujący sposób:
- Monitorowanie zmaterializowanych metryk widoków w witrynie Azure Portal przy użyciu Azure Monitor. Użyj zmaterializowanej metryki wieku widoku,
MaterializedViewAgeSeconds
, jako podstawowej metryki, aby monitorować świeżość widoku.
- Monitoruj zmaterializowane metryki widoku w obszarze roboczym usługi Microsoft Fabric. Użyj zmaterializowanej metryki wieku widoku,
MaterializedViewAgeSeconds
jako metryka podstawowa, aby monitorować świeżość widoku. Aby uzyskać więcej informacji, zobacz Włączanie monitorowania w obszarze roboczym.
Monitoruj właściwość
IsHealthy
przy użyciu.show materialized-view
.Sprawdź błędy przy użyciu polecenia
.show materialized-view failures
.
Uwaga
Materializacja nigdy nie pomija żadnych danych, nawet jeśli występują stałe błędy. Widok jest zawsze gwarantowany, aby zwrócić najbardziej aktualną migawkę zapytania na podstawie wszystkich rekordów w tabeli źródłowej. Stałe błędy znacznie obniżają wydajność zapytań, ale nie powodują nieprawidłowych wyników w zapytaniach wyświetlania.
Rozwiązywanie problemów ze zmaterializowanymi widokami w złej kondycji
Jeśli metryka MaterializedViewAge
stale rośnie, a metryka MaterializedViewHealth
pokazuje, że widok jest w złej kondycji, wykonaj następujące zalecenia, aby zidentyfikować główną przyczynę:
Sprawdź liczbę zmaterializowanych widoków w klastrze i bieżącą pojemność dla zmaterializowanych widoków:
.show capacity | where Resource == "MaterializedView" | project Resource, Total, Consumed
wyjściowe
Zasób Łączny Spożywane Zmaterializowany widok 1 0 - Liczba zmaterializowanych widoków, które mogą być uruchamiane współbieżnie, zależy od pojemności wyświetlanej w kolumnie
Total
, a kolumnaConsumed
pokazuje liczbę zmaterializowanych widoków aktualnie uruchomionych. Za pomocą zmaterializowane zasady wydajności widoków określić minimalną i maksymalną liczbę operacji współbieżnych, zastępując domyślny poziom współbieżności systemu. System określa bieżącą współbieżność pokazaną wTotal
na podstawie dostępnych zasobów klastra. Poniższy przykład zastępuje decyzję systemu i zmienia minimalne operacje współbieżne z jednego do trzech:
.alter-merge cluster policy capacity '{ "MaterializedViewsCapacity": { "ClusterMinimumConcurrentOperations": 3 } }'
- Jeśli te zasady jawnie zmienisz, monitoruj kondycję klastra i upewnij się, że inne obciążenia nie mają wpływu na tę zmianę.
- Liczba zmaterializowanych widoków, które mogą być uruchamiane współbieżnie, zależy od pojemności wyświetlanej w kolumnie
Sprawdź, czy podczas procesu materializacji występują błędy przy użyciu .show materialized-view failures.
- Jeśli błąd jest trwały, system automatycznie wyłącza zmaterializowany widok. Aby sprawdzić, czy jest wyłączona, użyj polecenia .show materialized-view i sprawdź, czy wartość w kolumnie
IsEnabled
jestfalse
. Następnie sprawdź dziennika dla wyłączonego zdarzenia za pomocą polecenia .show journal. Przykładem trwałej awarii jest zmiana schematu tabeli źródłowej, która sprawia, że jest niezgodna z zmaterializowanym widokiem. Aby uzyskać więcej informacji, zobacz polecenie .create materialized-view. - Jeśli błąd jest przejściowy, system automatycznie ponawia próbę wykonania operacji. Jednak awaria może opóźnić materializację i zwiększyć wiek zmaterializowanego widoku. Ten typ awarii występuje na przykład w przypadku osiągnięcia limitów pamięci lub przekroczenia limitu czasu zapytania. Zapoznaj się z poniższymi zaleceniami, aby uzyskać więcej sposobów rozwiązywania problemów z błędami przejściowymi.
- Jeśli błąd jest trwały, system automatycznie wyłącza zmaterializowany widok. Aby sprawdzić, czy jest wyłączona, użyj polecenia .show materialized-view i sprawdź, czy wartość w kolumnie
Przeanalizuj proces materializacji przy użyciu polecenia .show commands-and-queries. Zastąp Databasename i ViewName, aby filtrować określony widok:
.show commands-and-queries | where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"
Sprawdź użycie pamięci w kolumnie
MemoryPeak
, aby zidentyfikować wszelkie operacje, które zakończyły się niepowodzeniem z powodu osiągnięcia limitów pamięci, takich jak uruchamianie zapytań. Domyślnie proces materializacji jest ograniczony do szczytu pamięci 15 GB na węzeł. Jeśli zapytania lub polecenia wykonywane podczas procesu materializacji przekraczają tę wartość, materializacja kończy się niepowodzeniem z powodu limitów pamięci. Aby zwiększyć szczyt pamięci na węzeł, zmień grupę obciążeń widoków $materialized. W poniższym przykładzie zmieniono zmaterializowaną grupę obciążeń widoków, aby podczas materializacji używać maksymalnie 64 GB pamięci na węzeł:.alter-merge workload_group ['$materialized-views'] ``` { "RequestLimitsPolicy": { "MaxMemoryPerQueryPerNode": { "Value": 68719241216 } } }
Uwaga
MaxMemoryPerQueryPerNode
nie może przekroczyć 50% całkowitej ilości pamięci dostępnej w każdym węźle.Sprawdź, czy proces materializacji osiąga zimną pamięć podręczną. W poniższym przykładzie przedstawiono statystyki pamięci podręcznej w ciągu ostatniego dnia dla zmaterializowanego widoku,
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))
wyjściowe
HotCacheHits HotCacheMisses HotCacheRetrieved ColdCacheHits ColdCacheMisses ColdCacheRetrieved 26 GB 0 bajtów 0 bajtów 1 GB 0 bajtów 866 MB Jeśli widok nie jest w pełni w gorącej pamięci podręcznej, materializacja może doświadczyć chybień dysku, co znacznie spowalnia proces.
Zwiększenie zasad buforowania dla zmaterializowanego widoku pomaga uniknąć chybień pamięci podręcznej. Aby uzyskać więcej informacji, zobacz hot and cold cache and caching policy i .alter materialized-view policy caching command.
Sprawdź, czy materializacja skanuje stare rekordy, sprawdzając
ScannedExtentsStatistics
za pomocą polecenia .show queries. Jeśli liczba skanowanych zakresów jest wysoka, aMinDataScannedTime
jest stara, cykl materializacji musi skanować wszystkie lub większość zmaterializowane części widoku. Skanowanie jest wymagane do znalezienia przecięcia z różnicowym. Aby uzyskać więcej informacji na temat różnicowych i zmaterializowanej części, zobacz Jak zmaterializowane widoki działają. Poniższe zalecenia zawierają sposoby zmniejszenia ilości danych skanowanych w zmaterializowanych cyklach przez zminimalizowanie przecięcia z różnicą.
Jeśli cykl materializacji skanuje dużą ilość danych, potencjalnie w tym zimną pamięć podręczną, rozważ wprowadzenie następujących zmian w zmaterializowanej definicji widoku:
- Uwzględnij
datetime
grupowanie według klucza w definicji widoku. Może to znacznie zmniejszyć ilość skanowanych danych, tak długo, jak nie ma późno przychodzących danych w tej kolumnie. Aby uzyskać więcej informacji, zobacz porady dotyczące wydajności . Należy utworzyć nowy zmaterializowany widok, ponieważ aktualizacje kluczy grupowania nie są obsługiwane. - Użyj
lookback
w ramach definicji widoku. Aby uzyskać więcej informacji, zobacz .create materialized view supported properties.
- Uwzględnij
- Sprawdź, czy jest wystarczająca pojemność pozyskiwania, sprawdzając, czy metryka
MaterializedViewResult
, czy ingestionUmetric pokaże wartościInsufficientCapacity
. Pojemność pozyskiwania można zwiększyć, skalując dostępne zasoby (preferowane) lub zmieniając zasady wydajności pozyskiwania .
- Sprawdź, czy pojemność pozyskiwania jest wystarczająca, sprawdzając, czy metryki
MaterializedViewResult
są wyświetlaneInsufficientCapacity
wartości. Pojemność pozyskiwania można zwiększyć, skalując dostępne zasoby.
Jeśli zmaterializowany widok jest nadal w złej kondycji, usługa nie ma wystarczającej pojemności ani zasobów, aby zmaterializować wszystkie dane na czas. Rozważ następujące opcje:
- Skalowanie klastra w poziomie przez zwiększenie minimalnej liczby wystąpień. zoptymalizowane autoskalowanie nie uwzględnia zmaterializowanych widoków i nie skaluje klastra automatycznie, jeśli zmaterializowane widoki są w złej kondycji. Należy ustawić minimalną liczbę wystąpień, aby zapewnić klastrowi więcej zasobów, aby uwzględnić zmaterializowane widoki.
- Skalowanie w poziomie usługi Eventhouse w celu zapewnienia większej ilości zasobów w celu uwzględnienia zmaterializowanych widoków. Aby uzyskać więcej informacji, zobacz Włączanie minimalnego użycia.
- Podziel zmaterializowany widok na kilka mniejszych widoków, z których każdy obejmuje podzestaw danych. Można na przykład podzielić je na podstawie klucza o wysokiej kardynalności z kluczy grupowania zmaterializowanego widoku. Wszystkie widoki są oparte na tej samej tabeli źródłowej, a każdy widok filtruje według
SourceTable | where hash(key, number_of_views) == i
, gdziei
jest częścią zestawu{0,1,…,number_of_views-1}
. Następnie można zdefiniować składowaną funkcję, która unii wszystkich mniejszych zmaterializowanych widoków. Użyj tej funkcji w zapytaniach, aby uzyskać dostęp do połączonych danych.
Podczas dzielenia widoku może zwiększyć użycie procesora CPU, zmniejsza szczyt pamięci w cyklach materializacji. Zmniejszenie szczytu pamięci może pomóc, jeśli pojedynczy widok kończy się niepowodzeniem z powodu limitów pamięci.
MaterializedViewResult metryka
Metryka MaterializedViewResult
zawiera informacje o wyniku cyklu materializacji i może służyć do identyfikowania problemów w zmaterializowanym widoku stanu kondycji. Metryka zawiera Database
wymiar i i MaterializedViewName
Result
.
Wymiar Result
może mieć jedną z następujących wartości:
Powodzenie: materializacja została ukończona pomyślnie.
SourceTableNotFound: tabela źródłowa zmaterializowanego widoku została porzucona, więc zmaterializowany widok jest automatycznie wyłączony.
SourceTableSchemaChange: schemat tabeli źródłowej został zmieniony w sposób niezgodny z zmaterializowaną definicją widoku. Ponieważ zmaterializowane zapytanie widoku nie pasuje już do zmaterializowanego schematu widoku, zmaterializowany widok jest automatycznie wyłączony.
- InsufficientCapacity: wystąpienie nie ma wystarczającej pojemności, aby zmaterializować zmaterializowany widok z powodu braku pojemności pozyskiwania. Chociaż niewystarczające błędy pojemności mogą być przejściowe, jeśli często się powtarzają, spróbuj skalować wystąpienie lub zwiększyć odpowiednią pojemność w zasadach.
- InsufficientCapacity: Wystąpienie nie ma wystarczającej pojemności, aby zmaterializować zmaterializowany widok z powodu braku pojemności pozyskiwania. Niewystarczające błędy pojemności mogą być przejściowe, jeśli często się powtarzają, spróbuj skalować wystąpienie lub zwiększyć pojemność. Aby uzyskać więcej informacji, zobacz Planowanie rozmiaru pojemności.
- InsufficientResources: baza danych nie ma wystarczających zasobów (procesora CPU/pamięci), aby zmaterializować zmaterializowany widok. Chociaż niewystarczające błędy zasobów mogą być przejściowe, jeśli często się powtarzają, spróbuj skalować w górę lub skalować w poziomie. Aby uzyskać więcej pomysłów, zobacz Rozwiązywanie problemów ze złą kondycją zmaterializowanych widoków.
Zmaterializowane widoki w kolejnych bazach danych
Zmaterializowane widoki można zdefiniować w bazach danych obserwowanych. Jednak monitorowanie tych zmaterializowanych widoków powinno być oparte na bazie danych lidera, w której zdefiniowany jest zmaterializowany widok. Szczególnie:
-
Metryki związane z zmaterializowanym wykonywaniem widoku (
MaterializedViewResult
,MaterializedViewExtentsRebuild
) są obecne tylko w bazie danych lidera. Metryki związane z monitorowaniem (MaterializedViewAgeSeconds
,MaterializedViewHealth
,MaterializedViewRecordsInDelta
) są również wyświetlane w kolejnych bazach danych.
- Polecenie .show materialized-view failures działa tylko w bazie danych lidera.
Śledzenie użycia zasobów
Zmaterializowane użycie zasobów widoków: zasoby używane przez zmaterializowany proces materializacji widoków można śledzić za pomocą .show commands-and-queries
polecenia . Przefiltruj rekordy dla określonego widoku przy użyciu następujących wartości (zastąp DatabaseName
i ViewName
):
.show commands-and-queries
| where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"