1. 程式人生 > >SSAS(分析服務)優化手冊

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、 基於使用者使用情況進行優化(經常使用的維度、屬性),針對這些屬性設定聚合,以取得最佳查詢效能。


相關推薦

SSAS分析服務優化手冊

優化前注意事項 1、資料質量。資料倉庫中維度表的資料質量要嚴格保證。比如店倉的大區、省區、管理城市等屬性和店倉程式碼沒有一對多的上下級關係,這樣在設計店倉維度時,就無法建立有效的層次結構。這會拖慢查詢時的效能。 2、對報表分類。可按報表的使用方式和體積對使用者報表

部署SQL Server Analysis Service 分析服務: 帳戶名稱與安全性識別碼無法對應

     之前建立的SQL Server的分析服務的工程,未發生任何異常。但是最近對其中的內容做了一些修改,再次部署的時候,總是提示:賬戶名稱與安全性識別碼無法對應。      首先以為是賬號許可權不足,檢查之後發現沒有問題。      接下來以為是啟動Analysis S

Android O startForegroundService前臺服務流程分析

本文主要分析Android O startForegroundService(前臺服務)的流程,以及出現Context.startForegroundService() did not then call Service.startForeground()和nu

什麽是Web ServiceWeb服務

left 解決方案 暴露 它的 標準 編程 面向服務 好的 什麽是 從表面上看,Web Service就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。例如可以創建一個提供天氣預報的Web Service,那麽無論你用哪種編程語言開發的應用都可以通過調用它

linux雲自動化系統運維20vsftpd服務

linux1.什麽是ftpftp時internet上仍常用的最老的網絡協議之一,它為系統提供了通過網絡與遠程服務器進行傳輸的簡單方法2.安裝ftpyum install vsftpd -yfirewall-config 打開ftp服務,並且重新加載vim /etc/sysconfig/

linux雲自動化運維基礎知識23DNS服務

dns一.DNS概述作用:提供域名解析服務正向解析:域名——ip eg:(www.baidu.com —— 220.181.111.188)反向解析:ip——域名 eg:(220.181.111.188 —— www.baidu.com)DNS的查詢方式遞歸查詢:客戶機向自己的DNS服務器請求解析的

c#創建Windows service Windows 服務基礎教程

log 腳本 mage src installer als highlight syn project 轉自:http://www.cnblogs.com/sorex/archive/2012/05/16/2502001.html 1)創建Windows service項

DHCPDHCP服務

linuxdhcp系統版本:CentOS7.X概念DHCP(Dynamic Host Configuration Protocol)動態主機配置協議是一個局域網的網絡協議。DHCP服務可以自動給局域網中的主機自動分配一個IP地址。DHCP有兩個端口67和68。跑的是UDP協議。分別對應DHCP Server和

vSFTPFTP服務

linuxvsftp系統版本:CentOS7.X概念vSFTP是Linux上實現FTP(File Transfer Protocol)文件傳輸協議的一款軟件。在企業中,一般用於跨公網的文件共享安全傳輸。它擁有獨立的身份驗證機制以及文件傳輸加密機制,可以讓文件傳輸更安全,但是相對來說傳輸效率則會降低。vSFTP

Squid代理服務

linuxsquid系統版本:CentOS7.X概念Squid是一個高性能的代理緩存服務器。可以幫助PC代理去請求頁面數據,並緩存到本地。當第二次繼續訪問時直接將緩存頁面返回給PC。Squid的特點:通過緩存的方式為用戶提供WEB訪問以及加速對用戶訪問的WEB進行過濾控制Squid工作有三種方式:正向代理、透

Maven的pom.xml文件結構之基本配置packaging和多模塊聚合結構服務

second maven項目 支持 其中 jar maven 所有 了解 ack 1. packaging packaging給出了項目的打包類型,即作為項目的發布形式,其可能的類型。在Maven 3中,其可用的打包類型如下: jar,默認類型 war ejb ear r

C# 創建Windows ServiceWindows服務程序

inf 按鈕 obj 代碼編輯 ride == ins time 輸入 一、開發環境 操作系統:Windows 10 X64 開發環境:VS2015 編程語言:C# .NET版本:.NET Framework 4.0 目標平臺:X86 二、創建Windows

程序編譯與代碼優化 -- 早期編譯期優化

加密 使用 早期 time java語法 支持 註意 本地 IT 1. 概述 Java編譯器可能是指一個前端編譯器(其實叫“編譯器的前端”更準備一些),把*.java文件轉變成*.class文件的過程;也可能是指虛擬機的後端運行期編譯器(JIT編譯

C# Windows ServiceWindows服務相關

安全模式 log mman ini 服務項目 寫入 exception ren all https://www.cnblogs.com/charlie-chen2016/p/8031774.html 這是一個備份數據庫的服務,邏輯很簡單,就是通過定時器實現在特定的時間執行S

angularcli 第七篇service 服務

div inf stringify splice angular value mod struct 頁面 在組件中定義的信息是固定的,假設另外一個組件也需要用到這些信息,這時候就用到服務,實現數據共享 1、創建服務到指定目錄下: ng g service s

淺談Tarjan縮點分析+模板

鄰接表 ref 分享圖片 getchar() 是個 i++ iostream turn names 昨天一看發現我的博客數量到100篇了,撒花??ヽ(°▽°)ノ? 根據標題我們也知道,想要在接下來的十分鐘不浪費生命 讀者需要先行學習Tarjan強聯通

分散式系統詳解--架構簡介服務

                       分散式系統詳解--架構簡介(微服務)           前面的一個集合我們

早期編譯期優化——語法糖的味道

文章目錄 一、泛型與型別擦除 1.1 泛型與型別擦除 二、自動裝箱、拆箱與遍歷迴圈 三、條件編譯 一、泛型與型別擦除 1.1 泛型與型別擦除 Java中的泛型與C#中的泛型區別 Java中的

早期編譯期優化——Javac編譯器

文章目錄 一、Javac的原始碼與除錯 二、解析與填充符號表 2.1 詞法分析、語法分析 2.2 填充符號表 三、註解處理器 四、語義分析與位元組碼生成 4.1 標註檢查 4.2 資料及控制流分析

OpenStack雙節點部署—M aodh報警服務

aodh安裝 一、資料庫配置 二、建立服務憑證和API端點 三、安裝並配置aodh服務 四、驗證ceilometer服務 一、資料庫配置 # mysql -uroot -p123456 MariaDB [(