共用方式為


數據分割 - 資料分割儲存模式和處理

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

分割區的儲存模式會影響數據分割及其父量值群組和 Cube 的查詢和處理效能、記憶體需求和儲存位置。 儲存模式的選擇也會影響處理選擇。

分割區可以使用三種基本儲存模式的其中一種:

  • 多維度 OLAP (MOLAP)

  • 關係型 OLAP (ROLAP)

  • 混合式 OLAP (HOLAP)

Microsoft SQL Server SQL Server Analysis Services 支援這三種基本儲存模式。 它也支持主動式快取,可讓您結合 ROLAP 和 MOLAP 記憶體的特性,以達到數據與查詢效能的即時性。 如需詳細資訊,請參閱主動式快取 (分割區) 。

MOLAP

MOLAP 儲存模式會導致分割區的匯總及其源數據復本在處理分割區時儲存在 SQL Server Analysis Services 的多維度結構中。 此 MOLAP 結構已高度優化,可將查詢效能最大化。 儲存位置可以位於定義數據分割的計算機上,或位於執行 SQL Server Analysis Services 的另一部電腦上。 因為源數據復本位於多維度結構中,因此可以解析查詢,而不需要存取分割區的源數據。 使用匯總可大幅減少查詢回應時間。 數據分割之 MOLAP 結構中的數據只會與數據分割的最新處理相同。

當源數據變更時,必須定期處理 MOLAP 記憶體中的物件,以納入這些變更,並提供給使用者使用。 處理會以完整或累加方式更新 MOLAP 結構中的數據。 一個處理和下一個處理之間的時間會建立延遲期間,其中 OLAP 物件中的數據可能不符合源數據。 您可以在 MOLAP 記憶體中以累加或完整方式更新物件,而不讓分割區或 Cube 離線。 不過,在某些情況下,您可能需要讓 Cube 離線處理 OLAP 物件的特定結構變更。 您可以藉由更新和處理預備伺服器上的 Cube,以及使用資料庫同步處理將已處理的物件複製到實際執行伺服器,將更新 MOLAP 記憶體所需的停機時間降到最低。 您也可以使用主動式快取來將延遲降到最低,並將可用性最大化,同時保留 MOLAP 記憶體的大部分效能優勢。 如需詳細資訊,請參閱 主動式快取同步處理 Analysis Services 資料庫,以及 處理多維度模型 (Analysis Services)

ROLAP

ROLAP 儲存模式會使資料分割的匯總儲存在數據分割數據源中指定的關係資料庫中的索引檢視中。 不同於 MOLAP 儲存模式,ROLAP 不會造成源數據復本儲存在 SQL Server Analysis Services 資料資料夾中。 相反地,當無法從查詢快取衍生結果時,即可存取數據源中的索引檢視來響應查詢。 ROLAP 記憶體的查詢回應通常比 MOLAP 或 HOLAP 儲存模式慢。 ROLAP 處理時間通常也會變慢。 不過,ROLAP 可讓使用者即時檢視數據,而且當您使用不常查詢的大型數據集時,可以節省儲存空間,例如單純的歷史數據。

注意

使用 ROLAP 時,如果聯結與 GROUP BY 子句結合,SQL Server Analysis Services 可能會傳回與未知成員相關的不正確資訊。 SQL Server Analysis Services 可消除關係完整性錯誤,而不是傳回未知的成員值。

如果分割區使用 ROLAP 儲存模式,而且其源數據會儲存在 SQL Server Database Engine 中,SQL Server Analysis Services 會嘗試建立索引檢視表來包含數據分割的匯總。 如果 SQL Server Analysis Services 無法建立索引檢視表,它就不會建立匯總數據表。 雖然 SQL Server Analysis Services 會處理在 SQL Server Database Engine 上建立索引檢視的會話需求,但 ROLAP 分割區和其架構中的數據表必須符合下列條件,SQL Server Analysis Services 才能建立匯總的索引檢視:

  • 分割區不能包含使用 MinMax 聚合函數的量值。

  • ROLAP 資料分割架構中的每個數據表只能使用一次。 例如,架構不能包含 [dbo]。[address]AS “Customer Address” and [dbo]。[address]AS “SalesRep Address”。

  • 每個數據表都必須是數據表,而不是檢視表。

  • 分割區架構中的所有數據表名稱都必須以擁有者名稱限定,例如 [dbo]。[customer]。

  • 分割區架構中的所有數據表都必須具有相同擁有者;例如,您無法有參考數據表 [tk] 的 FROM 子句。[customer], [john]。[store], 和 [dave]。[sales_fact_2004]。

  • 數據分割量值的來源數據行不得為 Null。

  • 檢視中使用的所有資料表都必須使用下列選項設定為 ON 來建立:

    • ANSI_NULLS

    • QUOTED_IDENTIFIER

  • SQL Server Database Engine 中索引鍵的總大小不能超過 900 個字節。 SQL Server 資料庫引擎會在處理 CREATE INDEX 語句時,根據固定長度索引鍵數據行判斷這個條件。 不過,如果索引鍵中有可變長度的數據行,SQL Server Database Engine 也會針對基表的每個更新判斷這個條件。 因為不同的匯總有不同的檢視定義,因此使用索引檢視表的 ROLAP 處理可能會根據匯總設計成功或失敗。

  • 建立索引檢視的會話必須設定為 ON:ARITHABORT、CONCAT_NULL_YEILDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING和ANSI_WARNING。 此設定可以在 SQL Server Management Studio 中建立。

  • 建立索引檢視的會話必須將下列選項設定為 OFF:NUMERIC_ROUNDABORT。 此設定可以在 SQL Server Management Studio 中建立。

HOLAP

HOLAP 儲存模式會結合 MOLAP 和 ROLAP 的屬性。 如同 MOLAP,HOLAP 會導致分割區的匯總儲存在 SQL Server SQL Server Analysis Services 實例的多維度結構中。 HOLAP 不會造成儲存源數據的複本。 對於只存取數據分割匯總中摘要數據的查詢,HOLAP 相當於 MOLAP。 例如,如果您想要向下切入至沒有匯總數據的不可部分完成 Cube 數據格,則存取源數據的查詢必須從關係資料庫擷取數據,而且如果源數據儲存在 MOLAP 結構中,查詢的速度不會那麼快。 使用 HOLAP 儲存模式時,使用者通常會根據是否可以從快取或匯總解析查詢,以及從源數據本身解析查詢時間大幅差異。

儲存為 HOLAP 的數據分割小於對等的 MOLAP 分割區,因為它們不包含源數據,而且回應速度比 ROLAP 分割區更快,用於涉及摘要數據的查詢。 HOLAP 儲存模式通常適用於 Cube 中的數據分割,其需要根據大量源數據快速查詢摘要的查詢回應。 不過,當使用者產生必須觸及分葉層級數據的查詢,例如計算中位數值時,MOLAP 通常是較佳的選擇。

另請參閱

主動式快取 (分割區)
同步處理 Analysis Services 資料庫
分割區 (Analysis Services - 多維度數據)