什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
在本教程中,您將了解數據緩存在 DAX 計算中的作用。您將了解它們如何使用公式和存儲引擎來為您的查詢提供答案。
目錄
什麼是數據緩存?
存儲引擎以數據緩存的形式與公式引擎交互 。
如果您還記得之前有關 DAX 查詢結構的博客文章,您就會知道公式引擎從存儲引擎請求數據。後者再到數據庫,獲取不同類型的數據,然後以數據緩存的形式返回給公式引擎。
存儲引擎可以進行簡單的數學運算和聚合,從而使其速度更快。它還提供並行性,可以一次填充多個數據緩存。一個存儲引擎查詢可能需要一些時間才能生成答案。但是如果你把所有不同的存儲引擎查詢加起來,結果將不一樣,因為它填充了不止一個數據緩存。
另一方面,公式引擎適用於復雜的查詢。由於它是一個單線程引擎,它只能使用一個最終的合併數據緩存。一旦所有請求都被存儲引擎填滿,它就開始處理數據緩存。
如果公式引擎請求與上次請求完全一致,則再次使用之前返回的緩存。存儲引擎足夠聰明,如果它收到相同的請求,它會返回相同的數據緩存。這使得 DAX 的性能更快,因為數據已經緩存。
運行測量時,重要的是要針對冷緩存運行它;始終避免在熱緩存中運行查詢。暖緩存意味著存儲引擎數據緩存已經形成並準備返回。
主要特點是什麼?
數據緩存是在內存中具體化的表,這需要時間並佔用 RAM。始終牢記物化應盡可能低。
另一個關鍵特性是這些緩存是未壓縮的。一旦它從存儲引擎中出來並發送到公式引擎,數據緩存就變成了內存中未壓縮的完整表。此執行比全部在內存中並壓縮的對等存儲引擎請求慢得多。
使用公式引擎沒有問題;您只需要讓存儲引擎盡可能多地完成工作。
數據緩存也是臨時的。它們存在了一段時間,然後就消失了。即使它們在內存中具體化,它們也不會持久存在,因此它們會被清除。
在哪裡可以找到數據緩存?
您可以在物理查詢計劃的記錄列和DAX Studio 的服務器計時行列中找到此信息。它將顯示存儲引擎生成並發送到公式引擎的行數。
如果您在服務器計時運行某些測試,您會注意到行數可能會稍微偏離。這只是您拉起多少行的指南。
對於數據緩存,要牢記的主要事情是具體化的行數應盡可能等於輸出所需的行數。如果行數相差很大,則表示排序操作已關閉。
如果具體化的行數等於輸出所需的行數,則稱為Late Materialization。但是,如果具體化的行數大於所需的行數,則稱為Early Materialization。由於這些是未壓縮的數據,您不應讓兩個引擎都實現它們,因為這會降低 DAX 的性能。
這是早期實現的示例:
在物理查詢計劃中,您可以看到在記錄列中提取了 2500 萬行。但是,示例查詢不需要 2500 萬行輸出。這意味著查詢提取的行數超出了需要。
如果您查看 Server Timings,您會看到在 Rows Column 中拉取了相同數量的行。
在SE CPU視覺效果中,如果查詢中存在並行性,您將看到一個數字。由於此示例沒有,因此顯示為 0。
LuckyTemplates Desktop DAX 教程中的 DAX Studio 是什麼: DAX Studio 中的
上下文和計算引擎VertiPaq 分析器 |
LuckyTemplates 教程
結論
執行緩慢的 DAX 可能意味著您的查詢正在為您的引擎提取不必要的緩存。數據緩存負責 DAX 的速度和準確性,因為引擎在它們上工作以生成不同請求的答案。為了獲得更快的 DAX 性能,您可以通過正確構建數據模型和 DAX 度量來解決此問題。
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的