SSAS 最佳實踐和效能優化(1)

2021-08-05 21:54:52 字數 2155 閱讀 3112

一般analysis services cube的效能問題可能由多方面的原因造成。源系統,cube設計,mdx查詢,網路問題等因素都可能導致效能問題的產生。在這個系列文章中,我會分享一些設計和開發cube的最佳實踐和可以用來解決現存一些效能問題的小技巧。

下面的架構圖展示了經典的微軟bi應用架構,從左到右我們可以看到不同的層次。

第一層是源系統或者資料倉儲。第二層是analysis services cube,它從源系統拉取資料,然後將資料儲存到cube/olap庫中。第三層是從cube/olap消費資料的報表應用。

儘管典型的微軟bi應用架構將不同的層次放在不同的物理機器上,但是並不是所有的情況都是如此。比如,三層應用都放在一台物理機器,或者前兩層放在一台機器,第三層單獨一台機器等等實際場景。

1.查詢效能

2.處理效能(process)

3.合理和充分的利用硬體資源

查詢直譯器的xmla***接收請求,解析請求,然後將解析過的請求傳輸給查詢處理器執行請求。

從查詢直譯器接收經過驗證和解析的請求後,查詢處理器生成乙個執行計畫,該執行計畫指示如何從多維資料集(cube)和所使用的計算中返回請求結果。然後,查詢處理器會將計算結果快取到公式引擎快取(查詢處理器快取),使具有同意許可權的使用者之間能重用計算結果。

查詢處理器操作總結:

1.從儲存引擎請求子cube資料查詢

a.將請求轉換為子cube資料請求

2.通過以下方式產生結果姐

a.子cube的批量計算

3.將計算結果儲存在公式引擎的不同域中

a.查詢域 - 快取不會再會話的查詢中共享

b.會話域 - 快取將在會話的查詢中共享

c.全域性域 - 快取可在具有相同安全角色的會話之間跨會話共享

儲存引擎響應查詢處理器產生的子cube資料請求(用於查詢、快取和資料檢索的資料的子集或邏輯單元)。它首先檢查所請求的子資料是否已經在儲存引擎快取中可用,如果快取有查詢的資料,直接返回資料集。如果沒有,那麼它將檢查聚合儲存是否有所需查詢的聚合資料,如果是,那麼它將從聚合儲存中獲取聚合資料並將其快取到儲存引擎快取,並將其傳送到查詢處理器來響應請求。如果不能直接獲取聚合資料,它就會捕獲細節資料,計算所需的聚合,將其快取到儲存引擎,然後傳送到查詢處理器來響應請求。

儲存引擎操作總結:

1.建立屬性儲存(鍵儲存、關係儲存、位圖索引等)

2.建立層次結構儲存

3.建立聚合儲存

3.儲存引擎快取

a.當查詢執行時,從儲存引擎快取中載入資料

b.cleaner執行緒清除儲存引擎快取中的資料(在記憶體壓力下),或者處理分割槽

4.聚合資料

a.使用儲存的聚合值來響應請求

b.根據需要,聚合低粒度的資料,產生新的聚合值

5.事實資料

a.並行地掃瞄molap分割槽和分割槽段

b.使用位圖索引掃瞄頁面以查詢請求的資料

儲存引擎時間 = 每個子cube查詢事件的時間總和

公式引擎 = 總執行時間(query end event) - 儲存引擎時間(a)

處理效能

在處理資料過程(process)中,ssas將從源系統和資料倉儲中獲取最新資料,重新整理cube/ olap庫,生成集合資料。同時也會為維度的屬性和自然層次分別建立屬性儲存(store)和層次儲存。雖然處理時間並不會像查詢時間一樣,直接影響使用者體驗。但是,保證使用者報表在定義的服務水平協議(sla)範圍內展現最新資料是很重要的。

查詢效能

優化查詢效能的方法:關注維度和度量組的設計,建立聚合和點陣圖索引(通過設定適當的屬性),優化mdx查詢(例如,通過單元模式和使用子空間模式來避免單元格)

ssas例項/硬體資源優化

處理資料(process)和查詢效能取決於如何優化資源以獲得更好的吞吐量。您可以通過指定並行處理的執行緒數,設定可供ssas使用的記憶體、改進或使用更好的i/o(輸入/輸出)系統或者將資料和臨時檔案放置在更快的磁碟上來獲取更好的效能。

SSAS 最佳實踐和效能優化(3)

有幾個方面可能會影響分析服務cube的效能。比如,源系統,cube和mdx查詢的設計,網路問題。在這一節,將討論在設計和開發分析服務多維資料集時應該考慮的一些最佳實踐。在本系列的第1部分中,我們討論了典型的ssas應用程式架構和ssas內部架構的不同元件,以及不同元件和區域對效能改進所扮演的角色。在...

最佳實踐React效能優化

1 基本使用 使用方法 import react,from react import from utils const loadinghome dynamic import components home const loadinguser dynamic import components use...

MySQL 的效能優化最佳實踐

資料庫操作是當今 web 應用程式中的主要瓶頸。不僅是 dba 資料庫管理員 需要為各種效能問題操心,程式設計師為做出準確的結構化表,優化查詢效能和編寫更優 也要費盡心思。在本文中,我列出了一些針對程式設計師的 mysql 優化技術。在我們開始學習之前,我補充一點 你可以在 envato marke...