最佳化資料效能的建議
適用於此 Power Platform Well-Architected 性能效率檢查表建議:
PE:08 | 最佳化資料效能。 根據工作負載中的預期和實際用途最佳化資料儲存。 |
---|
本指南介紹了最佳化資料效能的建議。 最佳化資料效能就是提高工作負載處理和存儲資料的效率。 每個工作負載操作、事務或計算通常都依賴於資料的快速準確檢索、處理和存儲。 最佳化資料效能后,工作負載將平穩運行。 資料效能受損會造成效能效率低下的多米諾骨牌效應。 未能最佳化資料效能會導致回應延遲、延遲增加和可擴縮性降低。 它危及整個工作負載的效率。
定義
詞彙 | 定義 |
---|---|
資料存放區 | 儲存資料的資源,例如資料庫、物件存放區或檔案共用。 |
Index | 提供對專案的快速存取的資料庫結構。 |
線上分析處理(OLAP) | 一種組織大型業務資料庫、支援複雜分析以及執行複雜分析查詢而不會對事務系統產生負面影響的技術。 |
Online 事務處理(OLTP) | 一種記錄組織日常營運中發生的業務互動的技術。 |
資料分割 | 將資料物理劃分為單獨資料存儲的過程。 |
查詢最佳化 | 最佳化資料庫查詢速度的程序。 |
關鍵設計原則
要最佳化資料使用,請確保資料存儲針對其預期用途和工作負載中的實際用途進行最佳化。 最佳化資料使用可以提高查詢效能,減少資源消耗,提高整體系統效率。 考慮以下策略:
設定檔資料。 瞭解您的資料並確保您的資料模型非常適合您的工作負載。 考慮資料規範化和分區技術等因素。 為了有效地檢索資料,請確保選擇適當的資料類型並定義表之間的關聯。
最佳化查詢效能。 分析和最佳化在工作負載中運行的查詢。 使用查詢最佳化和緩存等技術。 使用伺服器端檢視預篩選資料。 若要識別瓶頸,請使用效能監視工具,然後進行必要的改進。
定期監控和調整系統。 持續監視工作負載的效能,並迭代資料存放區設定和查詢最佳化。 基於效能調優最佳實踐,分析系統指標,確定需要改進的領域並實施更改。 隨著資料的增長,您可能需要更新查詢以保持效能。
設定檔資料
資料分析涉及檢查來源中的資料,並收集有關資料的資訊。 目標是瞭解工作負載資料的品質、結構和特徵。 此過程允許識別缺失值、重複項、格式不一致和其他異常等問題。
要進行有效的資料概要分析,請考慮以下策略:
了解資料結構。 檢查資料的結構,包括表、列和關聯。 確定應用於每列的資料類型、長度和約束。 資料結構評估可説明您了解資料的組織方式以及資料與其他資料元素的關係。
分析資料量。 評估資料量以瞭解整體規模和增長模式。 確定記錄或文檔的數量以及單個表或集合的大小。 此資訊可幫助您估計存儲需求並確定可伸縮性問題。
識別資料關聯。 探索資料元素之間的關聯。 瞭解資料的連接方式,以便確定一個表或文檔中的更改可能如何影響相關資料。
評估資料品質。 通過檢查完整性、準確性、一致性和唯一性等因素來評估資料的品質。 識別可能影響資料完整性和查詢效能的資料異常、缺失值或重複記錄。 此步驟可幫助您確定需要清理和改進資料的區域。
擷取資料分佈。 分析每列中值的分佈以確定資料模式。 識別頻繁和罕見的值、異常值和資料偏差。 若要最佳化查詢效能,請分析其他索引鍵是否適合提供更好的效能。
監視資料效能
資料效能監視是持續追蹤資料存儲效率的做法。 它涉及使用為系統級、特定資料庫或第三方監視解決方案量身定制的工具,來收集和分析特定於資料作業的效能計量。 有效的資料效能監控使您能夠主動識別和緩解潛在的瓶頸,確保與資料相關的流程和任務高效。
若要監視資料效能,請考慮以下策略:
收集特定於資料的指標。 收集與資料效能直接相關的關鍵指標。 這些指標包括查詢回覆時間和資料輸送量。
設置數據警報。 專門為數據指標設置警報。 使用這些計量中的預先定義閾值或異常狀況來觸發警示。 警示可讓您在效能計量超出可接受範圍或顯示異常行為時收到通知;例如,如果資料庫查詢花費的時間比預期長,或資料輸送量顯著下降。 您可以使用專門的監視工具或自訂指令碼來設定這些警示。
診斷資料效能問題。 定期檢查收集的資料計量,以識別資料作業中潛在的效能瓶頸或效能降低。 可視化工具或儀錶板在此過程中非常寶貴,有助於突出資料效能的趨勢、瓶頸和異常值。 確定後,調查這些問題的根本原因並計劃適當的補救措施。
分割資料
分區涉及將大型資料集或大容量工作負載劃分為更小、可管理的子集。 分區通過分配工作負載和改進並行處理來提高資料效能效率。 它還確保根據特定需求和查詢模式進行更有效的資料訪問。 您可以垂直或水平對資料進行分區(也稱為分片)。 例如,如果使用 Dataverse 彈性資料表,請考慮資料分割索引鍵應該是什麼。
策略 | 定義 | 範例 | 使用案例 |
---|---|---|---|
垂直分區 | 通過為每個分區選擇特定的列或字段,將表劃分為較小的表。 每個分區代表完整資料的一個子集。 | 如果您有一個包含 A、B、C 和 D 列的表,則可以創建一個包含列 A 和 B 的表,以及另一個包含列 C 和 D 的表。 | - 表包含許多列,但查詢不會一起訪問所有列。 - 某些列比其他列大,將它們分開可以提高 I/O 效能。 - 不同的資料部分具有不同的存取模式。 |
水平分區 | 根據行或值範圍拆分資料(也稱為分片)。 每個分區都包含具有相似特徵的行子集。 | 如果您有一個包含第 1 到 1000 行的表,則可以創建一個包含第 1 到 500 行的分區和另一個包含第 501 到 1000 行的分區。 | - 資料集對於單個位置或伺服器來說太大。 - 根據特定範圍或過濾器訪問資料。 - 需要跨物理節點或伺服器分配工作負載以提高效能。 |
若要對資料進行分區,請考慮以下步驟:
分析資料和查詢。 分析資料和查詢模式以確定合適的分區或分片策略。 了解資料的性質、訪問模式和分發要求。
確定索引鍵。 選擇分區鍵或分片鍵以跨分區或分片分發資料。 根據資料特徵和查詢需求仔細選擇索引鍵。
確定邏輯。 根據所選鍵確定分區或分片邏輯。 請考慮將資料劃分為多個範圍、應用哈希演算法或使用其他分區技術。
最佳化查詢
最佳化查詢可以細化查詢,以減少符合條件的資料和傳回的資料。 這些調整提高了資料檢索的效率和速度。 因此,資料庫的工作負載更輕,資源工作效率更高,使用者也能享受到更順暢的互動。
若要最佳化資料庫查詢,請考慮以下策略:
重寫查詢。 檢閱和分析複雜的查詢,以確定重寫它們的機會。 請考慮重構查詢邏輯、消除冗餘操作或簡化查詢語法。
避免 N+1 查詢問題。 通過使用聯接和批量提取來有效地檢索相關資料,最大限度地減少與資料庫的往返次數。
對聯接重新排序。 評估並考慮重新排列聯接順序,以最大程度地減少每個聯接操作中的行數。 聯接表的順序會影響查詢效能。
緩存查詢。 存儲頻繁運行的查詢的結果,以便於重用。 查詢緩存消除了重複運行相同查詢的需要,並減少了查詢處理開銷。
監視和調整。 監視查詢效能指標,例如運行時、資源利用率和查詢輸送量。 使用資料庫分析工具和監視功能來識別效能不佳的查詢。 使用該資訊來最佳化查詢效能。
封存和清除資料
存檔和清除是簡化資料存儲的策略。 封存會將較舊的、不經常存取的資料重新定位到更具成本效益的存放區中。 清除資料會永久刪除冗餘資料。 這兩種方法都通過減少資料量、提高資料訪問速度以及減少備份和恢復時間來提高效能效率。
- 減少數據量:更少的數據意味著更快的處理時間,確保快速回應使用者請求。
- 提高數據訪問速度:經過修剪的資料集允許更快速的查詢和數據檢索,從而優化系統回應能力。
- 減少備份和恢復時間:較小的數據集可加快備份和恢復過程,最大限度地減少停機時間並確保一致的性能。
歸檔和清除有助於在資料驅動型系統中保持最佳效能效率。
最佳化存儲負載
最佳化存儲負載意味著簡化對存儲系統的請求。 它有助於消除不必要的請求,增強資料檢索,並避免存儲系統不堪重負。 最佳化存儲負載可確保存儲系統保持對合法請求的回應並保持最佳效能。 實施策略以減輕資料存放區的處理負擔。 若要最佳化資料存放區載入,請考慮以下策略。
使用快取
緩存將經常存取的資料儲存在快速存取的儲存區域中,使資料檢索比從主源提取資料更快。 此技術通過減少訪問時間和避免重複獲取資料來提高資料效能。 快取可提高讀取速度和使用者回應時間,尤其是對於頻繁存取的資料。 此方法對靜態資料或很少更改的資料最有效。
若要確保最佳緩存效率,請考慮過期策略、逐出策略和緩存大小管理等因素。 調整設置,例如存留時間(TTL),以獲得最佳效能。 若要使用緩存最佳化存儲負載,請考慮以下策略:
記憶體緩存:執行記憶體緩存以將經常存取的數據儲存在記憶體中,以便快速檢索。 可以將此技術用於計算或從資料庫中檢索成本高昂的應用程式資料。 記憶體中緩存對於經常讀取但不經常更改的資料非常有用。 例如,您可以使用雲端流程中的變數或畫布應用程式中的集合來快取資料。
資料庫查詢快取:使用此技術緩存資料庫查詢的結果,以避免多次運行相同的查詢。 資料庫查詢快取對於複雜且耗時的資料庫查詢非常有用。 緩存查詢結果時,將快速返回同一查詢的後續請求。 此外,請考慮盡可能使用伺服器端視圖來預篩選資料,以縮小與查詢相關的資料範圍。
內容交付網路快取:使用此技術在分散式網路伺服器上緩存 Web 內容,以減少延遲並改進內容交付。 內容傳遞網路快取對於靜態內容 (例如影像、CSS 檔案和 JavaScript 檔案) 非常有效。 內容交付網路將內容副本存儲在全球多個位置,因此使用者可以從地理位置附近的伺服器訪問內容。
最佳化資料更新
最佳化資料更新涉及評估執行的資料更新以確保其效能。 更新對效能的影響比其他作業更大,因為更新可能會觸發不必要的工作,並導致鎖定衝突。
若要評估如何最佳化資料更新,請考慮:
數據更改。 最佳化自動化以使用資料或篩選器的原始影像,來最大程度地減少未發生實際變更時的工作。 避免觸發自動化未修改的資料。
自動化。 根據資料變更評估何時以及如何觸發更新,並最佳化觸發器以包含篩選器。 例如,僅當資料來源中的特定欄位修改時,才觸發自動化。 評估多次增量觸發自動化的更新。 否則,請考慮是否可以建立自訂作業來處理所有處理。 例如,如果訂單發貨,發貨日期和追蹤號分別更新,則可以在自訂“ShipOrder”操作中同時更新它們。
死鎖。 評估由於多個流以不同順序更新相同資料而導致問題的慢速更新操作。 這種低效率會導致鎖定衝突甚至潛在的死鎖,從而導致不必要的返工。 更新同一序列中的不同資源以最大程度地減少爭用。
批量更新。 如果對表的多行運行操作,請考慮使用 批量操作。
最佳化資料移動和處理
最佳化資料移動和處理涉及提高與資料提取、轉換、載入和處理相關的操作的效率和效能。 請考慮最佳化資料移動和處理的以下關鍵方面:
提取、轉換和載入 (ETL) 優化:優化 ETL 流程以最大限度地縮短處理時間。 您可以簡化提取過程、實施高效的轉換演算法並最佳化載入過程。 當您使每個步驟高效時,您就會最佳化整個工作流程。
並行處理:使用並行處理技術來提高性能。 當您在多個線程或節點之間分配資料處理任務時,您可以同時劃分和處理工作負載,從而實現快速處理。
批處理:將類似的任務分組在一起,以減少重複操作帶來的開銷。 批量處理多個任務以減少整體處理時間。
資料鄰近性設計
資料鄰近性是指將資料策略性地放置在更靠近最頻繁存取資料的使用者或服務的位置。 縮短資料與其用戶之間的物理或邏輯距離可確保更快的資料訪問和更高的回應能力。 要最佳化設計以實現近距離,請考慮以下策略:
評估數據訪問模式:評估工作負載的訪問模式和頻繁訪問的數據。 此分析可以幫助確定將資料放置在何處以獲得最大收益。
選擇支援數據重新定位的解決方案:考慮根據不斷變化的訪問模式提供動態數據重新定位的解決方案,以確保最佳數據定位。
選擇支援資料同步的解決方案:如果您為分散式使用者群提供服務,請選擇支援跨各個區域數據同步的解決方案,以確保數據副本在使用者附近可用。
權衡:如果基礎數據頻繁更改,請實施緩存失效機制,以確保緩存的數據保持最新。
Power Platform 簡易化
監視數據性能:若要監視數據性能,請考慮使用 Azure Monitor 來收集和分析基礎結構指標、日誌和應用程式數據。 您可以將監視器與其他服務集成,例如 Application Insights。 Application Insights 提供應用程式效能監控並支援多種平台。
Application Insights 收集使用方式和效能資料。 您可以使用 Log Analytics 將該資料與跨 Azure 資源的設定和效能資料關聯。 Application Insights for Dataverse 資料流目前提供 Dataverse API 傳入呼叫、Dataverse 外掛程式執行呼叫和 Dataverse SDK 呼叫相關的效能資料。
優化畫布應用中的查詢數據模式: 跟隨記錄的指南和建議。 請參閱 最佳化的查詢資料模式 Power Apps。
優化自定義、擴展或集成 Dataverse的方式: 跟隨記錄的最佳實踐和指南。 請參閱使用 Microsoft Dataverse 的最佳做法和指南。
優化資料庫查詢和索引性能:使用 Azure SQL 資料庫的查詢性能洞察功能來優化查詢、表和資料庫。 您還可以使用此功能來識別和排查查詢效能問題。
對於關係資料庫,請跟隨 索引設計指南、 SQL Server 索引指南和 Azure Cosmos DB 索引指南。 使用 SQL 資料庫對查詢執行 自動最佳化 以提高其效能。
對於 SQL 資料庫,應定期 重新組織或重新生成索引。 識別慢速查詢並對其進行最佳化以提高效能。 許多資料庫引擎都具有查詢調整功能。 有關詳細資訊,請參閱查詢效能的最佳做法。
Azure Cosmos DB 有一個預設索引原則,該原則會對每個項目的每個屬性進行索引,並為任何字串或數字強制執行範圍索引。 此策略提供高效的查詢效能,無需提前管理索引。
優化存儲負載:許多 Azure 資料庫服務都支援唯讀副本。 唯讀副本的可用性和配置因 Azure 資料庫服務而異。 請參閱每個服務的官方文檔以瞭解詳細資訊和選項。
相關資訊
效能效益檢查清單
請參閱完整的建議集。