Memory
SSAS 記憶體級別
我正在使用 SSAS 報告大量數據的統計資訊。
最近我開始學習調整的最佳實踐,我對 SSAS 如何記憶體數據很感興趣。
我進行了研究,得出的結論是,SSAS 使用三種類型的記憶體來避免直接磁碟 IO 命中。
- 公式引擎記憶體
- 儲存引擎記憶體
- 作業系統記憶體
那麼,問題來了,當冷查詢發生時,三個層級都會儲存一些數據嗎?如果發生這種情況,是否有可能將相同的數據記憶體在不同的級別?如果是,那麼為什麼記憶體的使用率如此之高,因為這可能會消耗幾乎整個 RAM?
例如,FE Cache 是否有可能儲存一些 cellset 或 rowset 數據,同時 SE Cache 儲存一些 cellset 或 rowset 數據的子部分,OS Cache 也儲存一些數據?
是的,所有 3 層都在記憶體相同的數據。
您不必擔心 SSAS 會佔用所有記憶體,因為它可以使用。SQL Server 數據庫引擎做同樣的事情。
如果 SSAS 遇到記憶體壓力,它會自動管理自己的記憶體,並根據需要從前端和儲存引擎記憶體中刪除條目。如果您在同一主機上執行一些其他服務競爭記憶體,那麼您可能希望通過更改其記憶體屬性設置來限制 SSAS 的記憶體使用。
您所指的作業系統記憶體是文件系統記憶體。當它受到記憶體壓力時,Windows 也會自動管理它。在任務管理器中,大部分“記憶體”數字是由於文件系統記憶體所致。您可以使用Sysinternals 的 RAMMap實用程序及其Empty Standby List選項來清除文件系統記憶體。
Chris Webb 寫了幾篇關於 SSAS 記憶體預熱的部落格文章,您可能會覺得這很有趣。這些文章來自 2009 年,但細節仍然與新版本的 SSAS 多維相關。