標籤:
最佳化前注意事項
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、 避免只有單個維度Cube
2、 避免建立多個維度,而這些維度只有單個屬性,請考慮統一這些維度
3、 鍵屬性(KeyColumns)的鍵列保證成員唯一性(可以使用多個鍵列保證唯一性)
4、 維度資料表中的欄位如果沒有分析意義,或暫時不用作分析,不要將它建為屬性
5、 避免為每個維度指定多個不可彙總的屬性(即IsAggregatable不要設為False)
6、 屬性如設為不可彙總(IsAggregatable設為False),要指明DefaultMembers的值
7、 對具有 500,000 個或更多成員的屬性使用數字鍵列
8、 有些說明性欄位(比如客戶的電話、郵箱地址),如果將它建為屬性,請將AttributeHierachyEnabled 設為 False
9、 每個維度最好建立一個階層
1) 在維度中建立階層。如維度嚮導沒有發現這些階層,要自行添加。
2) 建立階層前,先檢查屬性和屬性之間是否存在嚴格的一對多關第,如有,請建立屬性關聯性;
3) 屬性關聯性的名稱應與相關屬性的名稱相匹配;
4) 避免冗餘屬性關聯性,因為當Cube的資料粒度屬性是非鍵屬性時,這些關係可能導致資料無法彙總;
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. 避免在一個Cube中包含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、 基於使用者使用方式進行最佳化(經常使用的維度、屬性),針對這些屬性設定彙總,以取得最佳查詢效能。
【cube】SSAS(分析服務)最佳化手冊