[align=left][size=medium][color=darkred]maping設計優化技術
描述對於優化的普遍建議
1.減少transformations的數量,資料流在各個transformation之間總會有一些消耗。
2.考慮增加transformation的共享記憶體。比如session的共享記憶體(share memory)應該在12mb到40mb之間差不多了
3.一次計算,多次使用
避免再三對同乙個結果進行運算或者比較,而應該只計算一次表示式,並設定乙個true/false的標誌。在表示式裡可以使用變數(variable port)計算一值,同乙個transformation裡面該變數能夠被多次使用
4.僅僅連通需要的
4、only connect what is used.
刪除transformation之間不必要的連線,盡量減小資料流動,特別是在source qualifier裡面,這麼做同樣有利於維護。如果乙個transformation需要再一次連線,最好只把那些必須的字段標示為input和output。
在lookup transformation裡面,對於那些不需要用到的字段 既不要設定為input也不要為output,這樣能夠使transformation看起來比較乾淨整潔,也能夠讓它自動產生的sql語句盡可能的小,從而減小整個快取的開銷,也就提高了效能。
5、觀察資料型別watch the data types.
6、設計的可重用性facilitate reuse.
從一開始就應該計畫好可重用的transformation.
variable port可以發揮一些特別的用處,他們可以多次重複使用而只要一次賦值,特別是被用於計算乙個複雜的表示式,或者需要多次使用乙個取自於非連線方式的lookup呼叫的時候。
7、只操作需要運算(move)和轉換的資料
only manipulate data that needs to be moved and transformed.
使用join的時候選擇合適的driving/master table. 記錄數少的小表更適合做driving/master table
8、utilize single-pass reads.
去掉或者減少針對欄位的儲存過程,如果你是使用了字段級別的儲存過程,powercenter將會針對每一行記錄都呼叫一次儲存過程,這將極大的影響效能。
lookup transformation優化技巧
1.當資料來源很大的時候,並且lookup表在50w行以下的時候,設定為cache方式的lookup,這將明顯的提公升效能10-20個百分點。
2.一些估算認為不要快取任何超過50w條記錄的表,這僅對標準行長不超過1024位元組的情況起作用。如果行長大於1024,那麼50w行這個數值將不得不依據增加的行長而減小(例如,2048位元組的行大約快取的行數到25w和30w之間)
,這僅僅是個通用的估算方法,分別以快取和非快取方式執行session試試看,即使很大的表快取的方式通常還是比較快
3.當使用lookup table transformaition的時候,匹配條件中首先放置等於操作符=的條件,能夠提高lookup的效能
4.當lookup呼叫次數超過所有lookup table的10%-20%時候才使用快取的lookup.如果lookup呼叫次數過少就不需要快取那些大表,對於比較小表(少於5000行的)超過5到10次lookup呼叫就可以使用快取技術了。
5.對於特別小的值域,可以用decode/iif函式代替lookup.
6.如果用了快取的lookup效能不好,可以修改為非連線方式的,非快取的lookup.
7.對於特別大的lookup table,可以用動態快取的方式保留乙個永久的快取檔案。當第一次執行的時候把整個表快取到乙個永久檔案裡面去,開啟update else insert選項,伺服器就不用去資料庫把這張表又讀取一次了。
8.反覆檢查複雜的表示式(沒搞懂講什麼)
減少彙總函式的呼叫。
對於特定型別的aggregation可以使用expression transformation和乙個update strategy代替aggregate transformation.
operations and expression optimizing tips
1.數字操作比字串快
2.優化字元型的比較(比如,在比較前用trim去掉空格)
3.操作符比函式快(比如,|| vs concat)
4.優化iif表示式
5.在lookup裡面避免使用date型別的條件。用string型別代替。
6.test expression timing by replacing with constant. 用常量代替什麼?
7.使用平板檔案
使用伺服器上的平板檔案快於該伺服器上的資料庫
定長的文字檔案快於裝載分隔符的檔案,因為分隔符需要花額外的解析成本。如果處理複雜的tansformation,可以考慮先把檔案裝載到關係型資料庫,這樣可以 利用filter過濾和也可以自定義的合適的select語句
8.如果不方便從源資料取得已經排序的資料(例如,weblogs),可以使用sorter advanced extenal procedure.
9.用router分離資料流,從而避免使用多個filter。
10.為了優化彙總的過程,可以在aggregator之前使用sorter或者採用hash-auto keys的分割槽方式。即使資料來源不能排序,也可以使用sorter transformation,就可以開啟sorted ports選項。
11.用normalizer transformation可以實現行到列
12. update strategy會把不符合條件的行儲存到乙個檔案中(bad file)。如果這些記錄不是必要的,可以在update strategy之前就過濾掉 ,因為保留這些記錄需要花費額外的成本。這時候在設定update strategy的引數為discard rejected rows.
13.當使用joiner transformation時候,確保master的資料量相對較小
14.在裝載到資料庫的過程中,如果必須要用update覆蓋的這種方式,可以在target之前用lookup transformation取得主鍵,根據主鍵的update大大快於沒有索引的lookup override。
Mapping設計優化技術
lookup transformation優化技巧 1 當資料來源很大的時候,並且lookup表在50w行以下的時候,設定為cache方式的lookup,這將明顯的提公升效能10 20個百分點。operations and expression optimizing tips 1 數字操作比字串快 ...
MySQL優化技術 3正規化的表設計
一 資料庫分類 關係型資料庫是通過行和列來將資料儲存在一張張資料表中,表與表之間存在資料關係。常用的關係型資料庫包括 mysql oracle sqlserver db2等 以鍵值對的形式來儲存資料,是一種物件導向 面向集合的資料儲存方式。常用的非關係型資料庫包括 nosql mongodb等 二 ...
頁面優化技術
瓶頸在資料庫。解決辦法加快取。快取 1.使用者在傳送請求時使用頁面的靜態化,把頁面快取在客戶端 2.請求還沒有到達 之前可以部署cdn節點,讓請求首先訪問cdn 3.可以使用nginx快取 4.接著在使用頁面級快取在詳細點可以使用物件快取 1.頁面快取 url快取 物件快取 使用頁面快取技術 手動渲...