SSAS(分析服务)优化手册
優化前注意事項
1、數據質量。數據倉庫中維度表的數據質量要嚴格保證。比如店倉的大區、省區、管理城市等屬性和店倉代碼沒有一對多的上下級關系,這樣在設計店倉維度時,就無法建立有效的層次結構。這會拖慢查詢時的性能。
2、對報表分類。可按報表的使用方式和體積對用戶報表進行分類。
1)?有的報表側重分析,維度匯總程度較高,數據量不是特別大,可以在門戶中直接使用。
2)?有的報表要求顯示全部明細數據,只是為了匯出至Excel文件進行加工,建議利用SSRS制作報表,然后將此報表以Excel格式發送至指定的共享文件夾或以郵件文件發送到指定用戶。避免在門戶中直接打開此類報表,這可能會嚴重消耗服務器的資源,影響其他報表的使用。
3、成員數量巨大的維度,不建議查詢到最底層的數據(葉級數據)時展開全部。比如到貨品。
4、一張報表減少Sheet頁的個數,每個Sheet頁的數據透視表個數最好不超過2個;
5、分析服務(SSAS)使用64位服務器,充分利用CPU和內存。
?
優化策略
一般地,按5個方面進行優化。
1.?數據源設計
2.?維度設計
3.?Cube設計
4.?分區設計
5.?聚合設計
?
數據源設計
1、 為提高性能,請使用 Microsoft OLE DB Provider for SQL Server 或 SQL Native Client 訪問接口而不是 .NET Data Provider for SQL Server (SqlClient) 連接到 SQL Server 數據源。
2、 不要在數據源中使用不支持的 OLE DB 訪問接口。SSAS設計為使用特定的 OLE DB 訪問接口集并經過測試。盡管其他 OLE DB 訪問接口也可用,并且數據源向導可使您選擇任何兼容的訪問接口,但是不同訪問接口的功能和行為可能有很大區別。
維度設計
良好的維度設計是建制Cube最重要的方面。根據最終用戶的業務需求,設計維度正確的屬性、屬性關系及層次結構。
1、 避免只有單個維度的多維數據集
2、 避免建立多個維度,而這些維度只有單個屬性,請考慮統一這些維度
3、 鍵屬性(KeyColumns)的鍵列保證成員唯一性(可以使用多個鍵列保證唯一性)
4、 維度表中的字段如果沒有分析意義,或暫時不用作分析,不要將它建為屬性
5、 避免為每個維度指定多個不可聚合的屬性(即IsAggregatable不要設為False)
6、 屬性如設為不可聚合(IsAggregatable設為False),要指明DefaultMembers的值
7、 對具有 500,000 個或更多成員的屬性使用數字鍵列
8、 有些說明性字段(比如客戶的電話、郵箱地址),如果將它建為屬性,請將AttributeHierachyEnabled?設為 False
9、 每個維度最好建立一個層次結構
1)?在維度中建立層次結構。如維度向導沒有發現這些層次結構,要自行添加。
2)?建立層次結構前,先檢查屬性和屬性之間是否存在嚴格的一對多關第,如有,請建立屬性關系;
3)?屬性關系的名稱應與相關屬性的名稱相匹配;
4)?避免冗余屬性關系,因為當多維數據集的粒度屬性是非鍵屬性時,這些關系可能導致數據無法聚合;
5)?較低級別的成員個數多于較高級別的成員個數;
6)?建立好屬性關系,再建立層次結構;
7)?避免將屬性的可見屬性層次結構用作用戶定義的層次結構中的級別
8)?如無必要,避免建立不存在屬性關系的非自然的用戶層次結構;
9)?有時,為方便用戶操作和應用MDX,也可建立非自然的用戶層次結構;
10)?避免層次結構中不包含的菱形關系
10、?將維度的 UnknownMember 屬性從Hidden 更改為None
11、?定義時間維度時,使用“商業智能向導”,設置“Time”屬性類型,以使它們與維度類型兼容
12、?設定時間維度鍵屬性的valueColumn設為日期格式的字段
13、?不要將維度的 ErrorConfigurations中的KeyDuplicate 設為IgnoreError ,這樣,SSAS會自檢查維度和屬性的數據關聯性是否正確,并提出警告。根據這些警告,檢查維度和屬性的關聯性是否正確。
Cube設計
1.?避免創建具有相同維數和粒度的度量值組
2.?避免將兩個完全沒有維度關聯系的事實表放在一個Cube中
3.?避免在一個多維數據集中包含15個或更多的度量值組
4.?將非重復計數度量值分為不同的度量值組
5.?將Cube與分析無關的屬性的 AttributeHierarchyEnabled設為False
分區設計
1、 使用 MOLAP存儲模式
2、 將超過2千萬行或大小超過250MB的大分區拆分為較小的分區以改進性能
3、 將度量值組的分區與少于2百萬行或大小小于50MB分區合并
4、 DistinctCount度量值組分區可考慮按最常用的維度來分區(不一定是時間)
聚合設計
1、 不要在低于事實表粒度屬性的級別建立聚合
2、 為具有 500,000 或更多行的分區設計聚合
3、 為單個分區生成的聚合數不能超過500
4、 不要將相關屬性包括在同一聚合中
5、 將一個度量值組中的聚合設計數限制為三個
6、 刪除任何分區都不使用的聚合設計
7、 包括只具有半累加性度量值的所有度量值組聚合中的時間維度粒度屬性
8、 設計聚合時,要精確指定“估計的計數”和“分區的計數”;或者由SSAS自行計數
9、 聚合的大小不要超過事實表大小的1/3
10、?移除沒有應用到分區的聚合
11、?基于用戶使用情況進行優化(經常使用的維度、屬性),針對這些屬性設置聚合,以取得最佳查詢性能。
轉載于:https://www.cnblogs.com/junkai/p/6479539.html
總結
以上是生活随笔為你收集整理的SSAS(分析服务)优化手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 从Excel中读取时间数据
- 下一篇: android导入项目出现style错误