Cognos學習之四:Cube性能優化、參數配置和更新

1.        與數據相關的考慮事項
對源數據進行分析是確定數據質量、存儲方式、源數據類型和所需準備工作的重要一步。  
1.1        清潔合併數據
對數據進行預處理可以帶來性能上的提高:
•        如果源數據只含有模型所需的信息,將會加快Transformer 的讀取時間。例如,如果在數據源中包含了一些沒有用的列,那麼即使在模型中沒有用到這些列,Transformer 也會花費額外的時間對它們進行處理。

•        數據合並可以減少被讀取的記錄的數量。Transformer讀取的記錄數量越少,PowerCube生成的時間也就越短。
1.1.1        提示
•        當設計將在Transformer中所使用的數據源時,要儘量只包含那些生成模型所需的列,使處理時間最小化。如果包含了不需要的列,可能就會對數據源的處理時間產生影響。
•        在可能的情況下,請保持Transformer模型中的類別結構,這樣就可以減少對它們進行重建所需的多餘的處理過程。
•        如果模型中包含了較長的描述,我們推薦您使用已經含有和描述相關聯的類別的模型來生成PowerCubes。
1.2        定時(Timing)
定時控制 (在數據源屬性頁上)可以控制Transformer在什麼時候對數據源進行處理。
首先應該執行結構型數據源來創建模型中的類別結構。完成這一步後,如果在PowerCube生成過程中不需要執行它們 (數據源中沒有添加新的類別,並且含有這些類別的模型已經得到保存) ,那麼可以將數據源的定時功能(timing)設置如下:

有些結構型數據源代表一種易變動的結構,這種結構需要在每次生成PowerCube時對這些類別進行更新。可以將這種類型的數據源的定時功能設置爲在創建PowerCube的類別生成階段來運行。

事務型數據源隨着每次生成PowreCube時度量值所需的新數據的變化而不斷髮生變化 。事務型數據源在PowerCube創建過程中執行來提供度量值:

1.3        驗證類別唯一性,最大化數據訪問的速度
在數據源屬性頁上有兩個用於唯一性驗證的設置。默認的屬性設置爲Verify Category Uniqueness。對於所提供的列與含有唯一層的維度中的層相關聯的數據源,推薦使用該項設置。通常這些數據源爲結構型數據源。

如果設置爲Verify Category Uniqueness並且Transformer 檢測到在一個標識爲“Unique”(層屬性)的層上有兩個類別具有相同的源值,就會返回以下錯誤信息:
(TR2317) The level 'City' is designated as unique.  Source value 'Green Bay' was used in an attempt to create a category in the path (By state,Illinois,Green Bay).  'Green Bay' already exists in level 'City' in the path (By state,Wisconsin,Green Bay).
(TR0136) A uniqueness violation was detected.  The process has been aborted.
例如,State維度在City層上被設置爲Unique:
              

該錯誤表示在City層下存在第二個Green Bay實例 (本例中爲Illinois)。例如,如果您的源數據如下:

Measure, State, City
1, Wisconsin, Green Bay
2, Wisconsin, Appleton
3, Illinois, Green Bay

當在City層上沒有選定“Unique”時,維度視圖顯示爲:


當在City層上選定“Unique”,過程會被中斷,維度視圖顯示爲:

如果您確定模型數據源中的值被映射到層的唯一類別中,則可以設置Maximize Data Access Speed屬性。 當啓用該屬性時,唯一性驗證將會將到最低,數據源處理的性能將會提高。Transformer不會不停的對現有值和類別值進行驗證。這就意味着性能可以得到極大的提高。
警告!  如果啓用了Maximize Data Access Speed,而在數據中存在違反唯一性的問題,Transformer將不會通知您。會造成在PowerCube中產生類別丟失和值不準確的問題。
使用和上面相同的例子,如果啓用了Maximize Data Access Speed並且City層被設置爲“ Unique” ,Transformer將不會通知您Green Bay存在於兩個不同的State(Wisconsin和Illinois)下,PowerPlay中的最終結果如下:

注意:上面的交叉表中不存在Illinois
如果刪除City層的唯一性並對立方體進行重建,PowerPlay中的最終結果爲:

注意:當設定Maximize Data Access Speed 時,將不會執行唯一性的轉移(unique move)。

1.4        多服務器處理功能
如果生成PowerCube的計算機是雙CPU,您就可以利用多服務器處理的功能。啓用該功能可以大大提高數據讀取階段生成PowerCube的整體性能。  
多服務器僅適用於以下數據源類型:

•        Impromptu Query Definition (IQD)
•        Delimited Field Text
•        Delimited Field Text with Column Titles
該選項可以在Data Source屬性對話框中進行設置:


1.5        增量更新
如果創建整個立方體的條件不滿足,那麼增量更新將是一種很好的解決方法。增量更新僅將最新的數據添加到現有的PowerCube而不會對以前的數據進行重新處理。與重建整個PowerCube相比,使用增量更新只會對很少的數據進行更新,而且更新的速度也會得到加快。
如果PowerCube的結構(維度、層等)爲靜態,您只需考慮使用增量更新功能。如果發生了結構變化,必須使用所有數據重新生成立方體。
推薦您定期重建PowerCube。第一次建立立方體時,自動分區( Auto-Partitioning)功能可以將維度和層分割爲多個分區層(partitioning level)。 在此之後所有新的類別將被加到 “0”分區層上。 如果隨時間的變化增加了很多類別,PowerCube用戶最終會遇到性能問題。使用所有當前類別重新生成PowerCube將允許Transformer設計出一種新的分區模式。下面的例子是每四次增量更新後進行一次完整重建的調度情況:

Build         處理行爲
1         初始化加載
2         對build1進行增量更新1
3         在build 2上進行增量更新2
4         在build 3上進行增量更新3
5         在build 4上進行增量更新4
6         由初始加載和從增量更新1到增量更新4組成的完全加載
7         在build 5上進行增量更新5
8         在build 7上進行增量更新6…

1.6        設置Transformer環境
本節列舉出了在Windows NT上使Transformer獲得最佳性能所需考慮的設置 :
•        WriteCacheSize: 根據可用內存的多少,寫緩存的值會對PowerCube的生成時間產生正面或負面的影響。當有足夠物理內存以至於磁盤緩存可以增加到和PowerCube一樣大小時,就可以獲得最佳得性能。  
可以在Services - PowerPlay Data Services - Cache 下的Configuration Manager 中對該設置進行修改。默認值爲 8192 (或 8MB)。要對其進行修改,可以使用1024爲增量來增加該值的大小。在大型系統上將寫緩存增加到32768 (32MB) 或 65536 (64MB) 可以提高性能。然而,如果將其增加到非常大的值(例如102400 或數百兆字節) 會損害性能。  
•        SortMemory: 該變量可以設置對數據進行排序時所使用的可用物理內存。Transformer 對數據進行排序用於數據合併和自動分區。  
所設定的數值代表在進行數據排序時所使用的2K區塊的數量。例如, 將值設爲5120可以提供5120 x 2K = 10MB 的內存。默認值爲512。 可以在 Services - UDA - General 下的Configuration Manager 中對默認值進行修改。將默認值設置爲5120是一個不錯的選擇。  
•        TEMPFILEDIRS: Transformer 使用該設置用於臨時排序文件。在Transformer執行排序操作時都會創建該臨時排序文件。  
可以修改Services - UDA - General 下Configuration Manager 中的地址。可以設置以分號分隔的多個目錄。
•        MaxTransactionNum:  Transformer可以在生成PowerCube的各個階段插入checkpoint。Maximum Transactions Per Commit設置可以限制插入一個checkpoint之前臨時保存的記錄的數量。默認設置爲MaxTransactionNum=500000。所設定的值是向PowerCube提交修改之前Transformer將要處理的最大記錄數。可以在General 標籤下的Transformer Preferences對話框中對默認值進行修改。
如果在生成立方體時發生了錯誤(例如 TR0112 There isn't enough memory available) ,需要降低 MaxTransactionNum的值,這樣就可以加快提交的頻率並釋放磁盤空間。
可以將該設置增加到一個更高的數值 (例如800000) 來提高立方體的生成時間,其結果取決於環境。  
主意:ReadCacheSize設置和Transformer無關,該項設置只針對PowerPlay Enterprise Server 和PowerPlay Client 。

1.7        參數設置文件

可以使用幾種參數設置,以下是最常用的參數設置:

•        ModelWorkDirectory=<path>
當進行模型設計時設定創建臨時文件的位置。臨時文件用來在立方體創建過程中發生嚴重錯誤時恢復在戰略檢查點被掛起的模型。該文件的擴展名爲QYI, 默認的路徑是ModelSaveDirectory設置的值。

•        DataWorkDirectory=<path1;path2;...>
設定在生成立方體時Transformer創建臨時工作文件的位置。可以使用多個驅動器的能力可以消除操作系統所造成的大小限制。 當Transformer 創建立方體時,它可以將臨時文件寫入指定的驅動器或目錄。這些文件被連接到一個邏輯文件,而無需考慮它們所在的驅動器。這些文件的位置由您所設定的路徑列表來決定。默認的路徑爲CubeSaveDirectory設置的值。

•        DataSourceDirectory=<path>
對於除IQD文件和Architect模型以外的數據源文件,該設置可以指定Transformer搜索這些文件的位置。默認路徑是當前工作路徑。

•        CubeSaveDirectory=<path>
指定Transformer保存立方體的位置。默認路徑爲ModelSaveDirectory。

•        ModelSaveDirectory=<path>
設定Transformer保存模型的位置。默認路徑爲當前工作路徑。

下面是Transformer日誌文件中有關這些設置的實例:

PowerPlay Transformer Wed Sep 19 09:39:17 2001
LogFileDirectory=c:/transformer/logs
ModelSaveDirectory=c:/transformer/models/
DataSourceDirectory=c:/transformer/data/
CubeSaveDirectory=e:/transformer/cubes/
DataWorkDirectory=d:/temp/
ModelWorkDirectory=e:/temp/

下面的例子顯示瞭如何在命令行中使用參數設置文件:
trnsfrmr -n -fc:/preferences.prf model.mdl
1.7.1        提示
•        在命令行設定參數設置文件的使用會覆蓋並優先於其它設置。 例如,如果在rsserver.sh文件中定義了環境設置,在命令行中使用參數設置文件將覆蓋這些設置。

•        TMPDIR、 TEMP、TMP等環境變量可以定義Transformer在什麼位置創建臨時文件。Transformer可以使用所定義的第一個環境變量。這些環境變量是操作系統定義的系統環境變量。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章