監視具體化檢視
適用於: ✅Microsoft網狀架構✅Azure 數據總管
以下列方式監視具體化檢視的健康情況:
- 監視 Azure 入口網站 中的具體化檢視計量。
- 具體化檢視年齡計量
MaterializedViewAgeSeconds
應該用來監視檢視的新鮮度。 這應該是要監視的主要計量。
- 具體化檢視年齡計量
IsHealthy
監視從.show materialized-view
傳回的屬性。- 使用
.show materialized-view failures
檢查失敗情況。
注意
具體化永遠不會略過任何數據,即使發生常數失敗也一樣。 檢視一律會根據源數據表中的所有記錄,傳回查詢的最新快照集。 常數失敗會大幅降低查詢效能,但不會在檢視查詢中造成不正確的結果。
針對狀況不良的具體化檢視進行疑難解答
計量 MaterializedViewHealth
會指出具體化檢視是否狀況良好。 具體化檢視在變成狀況不良之前,其年齡會由 MaterializedViewAgeSeconds
計量指出,逐漸增加。
具體化檢視可能會因為下列任何或所有原因而變成狀況不良:
- 具體化程序失敗。 MaterializedViewResult 計量和
.show materialized-view failures
命令可協助識別失敗的根本原因。 - 由於源數據表的變更,系統可能已自動停用具體化檢視。 您可以藉由檢查從
.show materialized-view
命令傳回的數據行來檢查IsEnabled
檢視是否已停用。 如需具體化檢視限制和已知問題的詳細資訊 ,請參閱詳細數據 - 資料庫沒有足夠的容量,無法即時具體化所有傳入的數據。 在此情況下,執行中可能不會發生失敗。 不過,檢視的年齡逐漸增加,因為它無法跟上擷取率。 這種情況可能有數個根本原因:
MaterializedViewResult 計量
計量 MaterializedViewResult
提供具體化循環結果的相關信息,並可用來識別具體化檢視健康狀態中的問題。 計量包含 Database
和 MaterializedViewName
和 Result
維度。
維度 Result
可以有下列其中一個值:
成功:具體化已順利完成。
SourceTableNotFound:已卸除具體化檢視的源數據表。 具體化檢視會因此自動停用。
SourceTableSchemaChange:源數據表的架構已以與具體化檢視定義不相容的方式變更(具體化檢視查詢不符合具體化檢視架構)。 具體化檢視會因此自動停用。
InsufficientCapacity:資料庫沒有足夠的容量來具體化具體化檢視。 這表示遺漏 擷取容量 或遺漏 具體化檢視容量。 容量失敗不足可能是暫時性的,但如果經常重新發生,建議您相應放大資料庫或增加原則中的相關容量。
InsufficientResources: 資料庫沒有足夠的資源(CPU/記憶體)具體化具體化檢視。 此失敗可能是暫時性的,但如果再次發生,請嘗試相應增加或相應放大資料庫。
- 如果具體化進程達到記憶體限制, 則可以增加$materialized檢視工作負載群組 限制,以支援更多記憶體或 CPU 供具體化程式取用。
例如,下列命令會改變具體化檢視工作負載群組,以在具體化期間使用每個節點的記憶體上限 64 GB(GB)(預設值為 15 GB):
.alter-merge workload_group ['$materialized-views'] ``` { "RequestLimitsPolicy": { "MaxMemoryPerQueryPerNode": { "Value": 68719241216 } } } ```
注意
MaxMemoryPerQueryPerNode 無法設定為每個節點總記憶體的 50% 以上。
追蹤資料庫中的具體化檢視
具體化檢視可以在追蹤資料庫中定義。 不過,這些具體化檢視的監視應該以定義具體化檢視的領導者資料庫為基礎。 具體而言:
- .show 具體化檢視失敗命令只能在領導者資料庫中運作。
追蹤資源耗用量
具體化檢視資源耗用量: 具體化檢視具體化程式所耗用的資源可以使用 命令來 .show commands-and-queries
追蹤。 使用下列項目來篩選特定檢視的記錄(取代 DatabaseName
和 ViewName
):
.show commands-and-queries
| where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"