引言
之前我們有一篇文章《 一文讀懂多維分析技術(OLAP)的進化過程 》為大家介紹了多維分析技術(即聯機分析處理(On-Line Analytical Processing),簡稱OLAP)的前世今生及發展方向。正是由于多維分析技術在業務分析系統的核心功能中的不可替代性,隨著商業智能系統的深入應用,分析系統的數據量呈指數級增長,原有依賴硬盤IO處理性能(包括傳統數據庫、多維立方體文件)的多維分析技術遭遇到性能瓶頸。與此同時,隨著服務器內存價格的下降,一種新的基于內存的OLAP技術架構出現了。這種新架構既能夠保證類似于MOLAP方式的高性能,也能基于更大的數據量進行分析,還不用定期將數據庫里的數據刷新到OLAP服務器來防止數據過期。這種新的體系架構當之無愧地成為大數據環境下搭建多維分析功能的流行選擇,而 IBM Cognos 的Dynamic Cubes就是它的代表作。
動態立方體(Dynamic Cubes)作為一種新的技術架構最先應用在 Cognos 的10.2.0版本。下面我們以 Cognos 的11.0版本來看看怎樣對動態立方體進行性能調優。
影響因素
動態立方體是以原有ROLAP技術為基礎,使用服務器內存作緩存的一種新型技術架構。它的響應性能的影響因素包括。
數據倉庫(數據集市):由于DynamicCubes的事實表數據都存儲在數據倉庫中,因此,有時數據倉庫的性能好壞會影響前端多維分析查詢的響應速度。在數據倉庫的多維數據模型中,需要注意:
維表中的連接事實表的代理鍵的數據類型應該采用integer類型
維表中的各個層級的層級鍵的數據類型應該采用integer類型
2.數據庫:提高數據庫的查詢性能,有助于提高最終多維分析展現的響應速度。
有時候多維分析的性能嚴重依賴于數據庫運行大數據量多任務查詢任務的性能
數據庫基于的硬件資源(內存、CPU及IO)應該考慮到大數據量并行查詢的性能,因此基于物理機的數據庫性能當然比基于虛擬機的更優
盡量少用或者不用視圖,因為視圖的數據不是物理存在的
最好采用分析型的MPP數據庫,因為多維分析都是針對大數據量的匯總查詢
采用列存儲技術的數據庫對于大量并發并聯查詢性能更優
要確保查詢性能最優化,可以通過數據庫的性能分析監控、執行計劃分析等工具
索引的設計,對于非MPP數據庫,索引的設計對于查詢性能影響很大
動態立方體性能調優
1.由于動態立方體使用機器內存和CPU進行性能增強,所以在對應用服務器的硬件進行評估時應該為將來的性能擴展留一定的預留空間。硬件評估可以通過Cognos提供的建模工具Cube Designer里的“評估硬件需求”功能初步估算。如下圖所示。
2.在多維立方體模型設計時,使用模型驗證功能,可以知道影響性能的問題所在。可能的問題有:連接字段類型、星形模型與雪花模型、過濾器的使用、視圖的使用等等。如下圖所示。
3.評估模型的復雜度。如果多維模型的維度和度量很多,數據量也很大,可以通過設計聚合表或者聚合內存來提升查詢性能。動態立方體會通過聚合感知技術找到最合適的聚合數據集進行查詢以提高查詢性能。如下圖所示。
4.JVM設置。動態立方體使用Java虛擬機作為內存管理的容器載體,所以Cognos也提供了一些JVM堆設置來優化數據查詢性能。你可以在Cognos Administration界面上找到Query Service服務進行參數調整。如下圖所示。
5.您還可以通過 Cognos 的Dynamic Query Analyzer (DQA)工具來對動態立方體的查詢性能進行評估并得到優化建議。在進行評估之前,記得將Dynamic Cubes的工作日志打開,如下圖所示。