混合模式加速分析處理
Oracle Essbase 混合模式計算與查詢處理器可讓您使用程序計算和讀寫模型設計功能執行即時分析。混合模式是區塊儲存查詢動態相依性分析的預設引擎。但它並不是計算命令檔的預設值 (不過您可以啟用)。
若您使用過 Essbase 11g 內部部署,您應該很熟悉下列一或多個針對不同用途量身打造的立方體設計模式:
- 區塊儲存:最適合用於大型的稀疏維度。此模式的立方體都會儲存起來並經過預先聚總,以獲得良好的查詢效能。此外,還包含一組豐富的計算函數供用於分析。
- 聚總儲存:最適合用於含有大量維度和許多上層聚總的立方體。成員公式可使用 MDX 加以指定。
- 混合模式:具有聚總儲存優點的區塊儲存模式。
在 Essbase 21c 和 Essbase 19c 中的區塊儲存立方體上,混合模式是查詢動態相依性分析的預設查詢引擎。混合模式提供完備的相依性分析與快速的聚總。對具有動態成員相依性的成員進行複雜的成員查詢時,它的效能十分優異。
Oracle 建議在分析應用程式中使用動態相依性,包括稀疏聚總。不像在 Essbase 11g 內部部署,您只能選擇性對稀疏維度實行動態計算。特別是在效能調校準則以及測試用途上,稀疏動態聚總是可行的建議選項。
混合模式雖是區塊儲存立方體的預設查詢處理器,但它並不是執行計算命令檔的預設值。計算命令檔若包含許多動態相依性,Oracle 建議您也對計算命令檔啟用混合模式。若要這樣做,方法是在應用程式組態特性中開啟 HYBRIDBSOINCALCSCRIPT 組態設定 (或使用 SET HYBRIDBSOINCALCSCRIPT 計算命令,以根據每個計算來控制它)。
大部分的 Essbase 計算函數都可在混合模式使用。若要查看所有混合模式支援計算函數的清單與語法,以及少數例外,請參閱混合模式支援的函數。混合模式支援使用 FIXPARALLEL 的平行計算,但未使用 CALCPARALLEL 進行平行計算。
請參閱 ASODYNAMICAGGINBSO ,瞭解在預設設定值之外設定混合模式的語法,或將它關閉。
此節裡的主題有︰
混合模式的優點
Essbase 混合模式立方體的優點包括可快速聚總整個稀疏維度、立方體大小比較小、記憶體使用量最佳化、彈性批次計算,以及完備的公式相依性分析。
混合模式結合了區塊儲存 (BSO) 程序計算與寫回功能,並兼具聚總儲存 (ASO) 的聚總效能。混合模式完全不需要儲存稀疏聚總,因此具有快速效能的優點。此優點減少了資料庫大小和記憶體使用量,並且加快批次計算的時間。相較於針對許多上層聚總使用聚總儲存,以及必須設計沿著維度明細行分割立方體的分割模型才能加速計算效能,部署考量事項如今已經過簡化,對於大量使用的層級 0 計算,您再也不需要考慮使用區塊儲存。
下列是一些混合模式有助於提升計算效能的案例:
-
區塊儲存資料庫的稀疏成員不是層級 0,而且根據階層計算 (而不是使用計算命令檔)。
-
稀疏動態計算父項成員的子項超過 100 個。
-
在空的聚總儲存目標與區塊儲存來源之間使用通透分割區。聚總儲存目標的公式若很簡單且可翻譯成區塊儲存公式語言,即可使用混合模式讓區塊儲存更快達成結果。
-
在兩個區塊儲存資料庫之間使用通透分割區,而且計算效能十分重要。
混合模式的另一個優點是沒有大綱順序相依性。您可以輕鬆地自訂解決順序,而不是重新排列維度順序。
混合模式也可讓您使用案例管理,在不增加儲存需求的情況下使用工作流程格式測試及建立假設資料模型。
比較混合模式、區塊儲存及聚總儲存
若未使用混合模式,動態計算成員的區塊儲存演算法在用於大型稀疏維度時會有其限制。混合模式 (和聚總儲存) 為動態相依性分析提供更好的最佳化。閱讀關鍵差異以協助您為 Essbase 應用程式選擇最適當的查詢處理器類型。
在沒有混合模式的情況下,系統必須儲存區塊儲存資料庫中的大型稀疏維度;若是讓這類維度成為動態維度,則會導致在查詢或計算時產生太多區塊 I/O 而影響效能。已儲存的稀疏維度若是非常大型,可能導致批次聚總時間變得很長,並且資料庫將隨著稀疏維度數量和大小的成長而變為大型資料庫。即使有這些缺點,區塊儲存仍因其強大功能而廣受使用。
聚總儲存是專為大型資料庫所設計,這類資料庫通常具有更多大型維度。與區塊儲存不同,聚總儲存不需要預先聚總大型稀疏維度,即具備良好的查詢效能。關鍵在於聚總儲存資料庫核心,此核心可協助整個大型維度快速進行動態聚總。
雖然聚總儲存提供非常多的優勢,但有許多使用者更適合使用區塊儲存,例如能以各種細微度載入資料、頻繁執行複雜的批次配置,或對全域的財務資訊實行幣別轉換等能力。在這類或許多其他情況下,混合模式可能才是最好的解決之道。混合模式是區塊儲存和聚總儲存的最佳功能組合。在混合模式下,Essbase 的特色如下:
-
即使在計算倚賴稀疏動態聚總的情況下,也能充分發揮程序計算彈性。
-
透過混合引擎處理存取動態稀疏成員的查詢。針對一小部分無法以此方式處理的查詢,Essbase 會採用區塊儲存計算流程以滿足要求。
-
如果您將稀疏成員標示為動態成員,便可提供下列優點:
- 不需要預先聚總
-
提升重組結構效能
-
提升備份效能
-
降低磁碟空間需求
-
由於混合模式涉及動態計算,因此您可以使用解析順序來排序計算。
附註:
不論混合計算是由查詢或計算命令檔驅動,都會使用公式快取和聚總儲存快取在暫存記憶體空間中執行。
關鍵差異
下列關鍵差異可協助您為應用程式選擇最適當的查詢處理器類型。
| 需求 | 聚總儲存 (ASO) | 區塊儲存 (BSO) | 混合模式 |
|---|---|---|---|
|
最佳化以跨多個稀疏維度快速聚總 |
是 |
編號 |
是 |
|
最佳化以使用最少的磁碟空間並縮短備份時間 |
是 |
編號 |
是 |
|
針對財務應用程式最佳化 |
編號 |
是 |
是 |
|
可執行配置 |
是 |
是 |
是 |
|
可執行批次計算 |
編號 |
是 |
是 |
|
支援成員公式 |
是,以 MDX 表示 |
是,以 Essbase 計算函式表示 |
是,以 Essbase 計算函式表示 |
|
最佳化以在成員公式中往前參照 |
編號 |
編號 |
是 |
|
可自訂計算/聚總解決順序 |
是 |
編號 |
是 |
|
可指定自下而上的查詢執行以加速較小型輸入資料集的相依性分析 |
編號 |
編號 |
是 |
|
可追蹤查詢執行並進行除錯 |
是 |
編號 |
是 |
|
可限制允許查詢使用的記憶體 |
是 |
編號 |
是 |
|
支援二次計算 |
編號 |
是 |
編號 |
|
可載入任何層級的資料 |
否。只能載入沒有公式相依性的層級 0 儲存格 |
是 |
可載入儲存的層級 不能載入動態層級 |
|
可使用緩衝區以增量方式載入資料 |
是 |
編號 |
編號 |
|
相同公式在稀疏維度的評估結果與在密集維度的評估結果會不同 |
無 |
是。在未使用混合模式的區塊儲存上,會反覆寫入 Essbase 計算命令檔以解析稀疏區塊的相依性。如果您將維度類型從稀疏變更為密集,反之亦然,會從相同的公式獲得不同的結果。 |
否。無論是稀疏或密集,公式相依性都會以相同的方式計算。 在混合模式下,Essbase 會使用演算法來解析動態相依性。在某些情況下,從計算命令檔衍生的資料,在混合模式和未使用混合的區塊儲存模式可能會不同。 |
開始使用混合模式
若要以混合模式開始執行 Essbase 應用程式,請從測試環境開始,讓大型、稀疏維度成為動態維度,並研究應用程式日誌。
若要開始使用混合模式,請依照這些準則:
-
設定一個開發環境,然後將現有區塊儲存應用程式移轉至該環境。區塊儲存立方體預設會啟用混合模式。
-
儘可能將大型稀疏維度設為動態維度。
-
啟用混合模式前後,都要執行測試查詢並查看應用程式日誌。此活動可以揭露聚總儲存查詢處理器的使用程度,以及所獲得的混合模式效益。對於每個查詢,應用程式日誌會說明
Hybrid aggregation mode enabled或Hybrid aggregation mode disabled. -
如果查詢中有太多筆記錄已停用混合模式,請洽詢 Oracle 客戶服務部。
混合模式立方體最佳化
使用混合模式的最有效方式:
-
避免在混合模式中使用二次計算。請改用解決順序。
-
在可行的情況下,將非層級 0 已儲存成員轉換成動態計算成員。
-
如果轉換成動態計算成員會影響相依公式的解決順序,您就需要將大綱的維度順序與先前批次計算順序及二次計算設定值的解決順序調整成一致。
混合模式立方體的預設解決順序與區塊儲存立方體的計算順序類似,但提供一些增強功能。如果您要使用非預設解決順序,可以對維度和成員設定自訂解決順序。
-
以錯誤解決順序處理的動態計算公式可能導致查詢執行太多公式,進而降低效能。可以的話,動態計算稀疏公式的解決順序應高於以階層方式聚總的稀疏維度。
在某些應用程式中,這並不可行,因為需要以不同的解決順序才能取得正確的公式結果。例如,含有單位與價格的應用程式需要在稀疏聚總之前先執行銷售值,才能於上層取得正確的銷售值。
-
您可能需要調整維度的密集或稀疏組態 (僅適用於無法使用混合引擎的區塊儲存引擎使用)。
-
如果可能,請將區塊大小縮減至最小。
Essbase 管理員可使用下列工具以混合模式監督及最佳化查詢效能:
-
若要限制任何單一查詢可消耗的記憶體數量,請使用 MAXFORMULACACHESIZE 組態設定。
-
您的立方體若含有使用跨維度運算子及多個 IF/ELSE 敘述句的複雜成員公式,效能問題可能與公式執行有關。如果懷疑是這種情況,您可以啟用自下而上的查詢作業以進行公式計算。這會藉由識別計算所需的交集來最佳化查詢時間,讓查詢時間和輸入資料大小成正比。
若要針對 Release 21C 進行這些查詢最佳化,請使用 QUERYBOTTOMUP 組態設定,以及 @QUERYBOTTOMUP 計算函數。若為版本 19C,請使用 IGNORECONSTANTS 組態設定搭配 BOTTOMUP 語法,以及 @NONEMPTYTUPLE 計算函數。
-
使用查詢追溯功能監督並對查詢效能進行除錯。依使用案例的不同,有多個應用程式層級組態設定值可供使用。使用 QUERYTRACE 對您認為有問題的單一查詢進行短期除錯。使用 TRACE_REPORT 收集並行執行查詢的相關統計資料 (適用於開發環境中的除錯)。在生產環境中使用 LONGQUERYTIMETHRESHOLD ,將執行超過設定時間之任何查詢的相關統計資料列印至應用程式日誌檔。
混合模式的限制與例外
查詢在某些情況下可能無法以混合模式做最佳的執行。Essbase 會偵測這些情況的發生,並以區塊儲存模式將它們聚總起來。查詢若混合了支援和不支援的混合模式計算類型,Essbase 預設會執行區塊儲存計算。
如果啟用,使用支援函數的成員公式會採用混合模式。如需支援和不支援的函數清單,請參閱混合模式支援的函數。
下列類型的查詢不會以混合模式執行:
-
使用公式且為通透分割區目標的動態計算成員
-
共用成員不在目標分割區定義及其原型成員在內或反向的查詢
-
XOLAP
-
文字計量/文字清單
屬性計算將以混合模式執行,但僅限「總和」。
若相依成員的解決順序高於公式成員,則會顯示下列警告:
Solve order conflict - dependent member member_name with higher solve order will not contribute value for formula of member_name混合模式的解決順序
Essbase 中的解決順序決定了在混合模式執行動態計算的順序。您可以自訂解決順序或接受預設值,預設值已針對高效能和相依性分析進行最佳化。
解決順序的概念適用於動態成員公式或計算命令檔中動態相依性所起始的動態計算執行。在多維查詢中評估儲存格時,除非指定解決順序以指示所需的計算優先順序,不然計算的解決順序可能並不明確。
您可以設定維度或成員的解決順序,或使用預設的 Essbase 解決順序。您可以設定的最低解決順序為 0,最高為 127。解決順序越高表示成員的計算順序越後;例如,解決順序為 1 的成員會在解決順序為 2 的成員之前被解決。
如果啟用混合模式,預設的解決順序 (又稱為計算順序) 與區塊儲存資料庫的解決順序極為相近:
| 維度/成員類型 | 預設解決順序值 |
|---|---|
| 已儲存的成員 | 0 |
| 稀疏維度成員 | 10 |
| 密集帳戶維度成員 | 30 |
| 密集時間維度成員 | 40 |
| 密集一般維度成員 | 50 |
| 屬性維度成員 | 90 |
| 二次計算動態成員 | 100 |
| MDX 計算的成員或具名集合 (在 MDX 與 中定義) | 120 |
總結來說,混合模式的預設解決順序規定已儲存成員的計算順序在動態計算成員之前,而稀疏維度的計算順序則在密集維度之前,並且依照它們在大綱中的顯示順序進行 (從上到下)。
沒有指定解決順序的動態成員 (有公式或沒有公式) 會沿用其維度的解決順序,但若被標示為二次計算則除外。
在區塊儲存模式中,二次計算是可以套用到含有公式且必須計算兩次才能產生正確值之成員的設定。
附註:
請勿在混合模式立方體使用二次計算。只使用解決順序。
二次計算不適用於混合模式,任何標示為二次計算的成員都會最後計算 (在屬性之後)。在混合模式中,預設解決順序若不符合您的需求,您應該實行自訂解決順序 (而非二次計算)。
混合模式的預設解決順序最適用於以下案例:
-
往前參照,其中的動態成員公式參照大綱順序中順序比較後面的成員。混合模式沒有大綱順序相依性。
-
根據大綱順序的子項值聚總與使用同等公式的聚總極為相似。
-
稀疏公式內存在動態密集成員相依性。在混合模式中,稀疏公式若參照密集動態成員,因為稀疏維度會先計算的關係,所以會忽略此參照。若要改變此情況,請為稀疏維度指定高於 (計算順序晚於) 密集維度的解決順序。
自訂解決順序
如果您需要調整混合模式中的動態計算行為,自訂維度和成員解決順序有助於達成此目的,且無須對大綱進行重大變更。
如果實行自訂解決順序,它會覆寫預設解決順序。成員或維度的解決順序若相同,則會依照它們在大綱中的顯示順序 (從上到下) 決定順序。
除非您自訂特定成員的解決順序,否則會將最上層維度成員的解決順序套用至該維度的所有動態成員。
若要變更解決順序,請使用 Essbase Web 介面中的大綱編輯器,或使用智慧型檢視 (請參閱變更所選 POV 的解決順序 )。
您可以設定的最低解決順序為 0,最高為 127。解決順序越高表示該成員的計算順序越後面。
若要瀏覽解決順序的使用案例,請參閱 Essbase 檔案目錄內應用程式工作簿儲藏庫之「技術」區段中的「解決順序」樣板。
非混合模式解決順序的注意事項
在聚總儲存立方體中,
-
所有維度的解決順序都設為 0。
-
會依大綱順序執行聚總,下列情況除外:
- 優先處理已儲存階層成員。
- 其次處理動態階層成員。
在非混合區塊儲存立方體中,預設解決順序如下:
-
稀疏優先於密集
-
帳戶優先於時間
-
屬性最後
附註:
若將帳戶成員的解決順序手動設為高於時間成員的解決順序,則會在動態時間序列成員之後評估帳戶。