導言
本頁面打算收集SAP CRM實施中可以用於避免性能問題的注意事項,重要的事項會由圖標標識。
如果你有其他的技巧想要說出來,別猶豫!
性能注意事項
通用
|
緩存讀取類訪問,特別是在性能關鍵的地方,比如字段檢查,這時要避免數據庫查詢。 |
|
|
嘗試把所有的東西放在同一個CRM_ORDER_MAINTAIN調用當中,以避免不必要的開銷。編輯多文檔的時候也是一樣,需要被替換為一個調用。 |
|
|
不要無限制地使用SAP內部API,比如,只讀取需要的數據就可以,而不是整個業務。 |
|
|
總是把性能放在心上,特別是在實現經常被調用的代碼的時候。這也包括,要事先預計好代碼被調用的情況。 |
|
|
.在維護業務后,不要忘記使用CRM_ORDER_INITIALIZE函數,以釋放緩存占用的內存。 |
|
|
ABAP Programming and Performance Notes 要考慮到通用的性能指導方針(避免嵌套循環、數據庫的反復查詢)更多信息請看:ABAP Programming 和 Performance Notes。 |
|
|
處理行項目的時候,不要通過header guid 使用函數CRM_ORDERADM_I_READ_OB(比如行項目層級的事件回調),這對性能來說極為關鍵,特別是在處理大量項目的時候。 |
|
系統設置
|
閱讀note 1162685 以獲取有關CRM WebClient UI設置的通用信息。 |
|
|
閱讀note 1162605 ,關於如何改善CRM WebClient UI使用中的網絡性能。 |
|
|
閱讀note 1281896 以獲取有關CRM WebClient UI共享內存大小設置的信息。 |
|
擴展性
|
不在字段檢查中放置性能昂貴的代碼。 |
|
|
為增強進行運行時性能評估(考慮到包含API調用的整個運行期間,並不是只有附加的代碼會導致性能問題,問題也有可能是不適當的API調用所導致的)。 |
|
|
不使用生成的表擴展處理垃圾數據。 |
|
|
在生成擴展時,你可以考慮關閉通用的檢查、實現一個專門的檢查,以提高性能。 |
|
事件處理器
|
不要將行項目交叉地放到各個立即執行的回調函數中,而是應該放在文檔處理的結尾處。 |
|
|
Always keep the concept of secondary transaction categories ("Nebenbus") in your mind. Make sure that newly registered EC function modules only run for the desired objects. |
|
|
只有在真的需要某個值的時候,才應該在事件處理器回調中請求數據。 |
|
|
使用CRMD_TRACE來找到事件處理器回調注冊(應當被放置)的正確位置。 |
|
報表框架
|
搜索用戶指定字段的時候,考慮擴展合適的索引表。閱讀note 1527039. |
|
|
要考慮到權限檢查也是查詢過程的一部分,並仔細觀察查詢權限檢查對數據庫查詢帶來的影響。 |
|
定價, VMC, 產品配置
|
盡可能降低價格處理的復雜性:考察多種情況,檢查不常用的情況類型,限制價格處理的訪問數量,使用合適的請求禁止某些在處理中不需要的條件。 |
|
|
查閱note 1269480 獲取有關配置、VMC和IPC的性能問題。 |
|
|
查詢note 1005457 獲取VMC設置(Java 堆). |
|
|
VMC日志只需要記錄錯誤。 |
|
|
CRM IPC定價公式實現的基本准則: |
|
CRM功能自定義
|
Actions:保持條件盡可能的簡單,不管它是一個計划(scheduling condition)或者是初始條件(starting conditions)。這使得Actions條件和報表查詢的速度更快。 |
|
|
Actions:對復雜的計划和起始條件使用各自的BAdI EVAL_SCHEDCOND_PPF 或EVAL_STARTCOND_PPF來實現,這樣可以獲得比使用基於工作流的條件更高的性能。基於條件的工作流通常會由一個解釋器來解釋並且訪問數據,這會成為性能的瓶頸。 |
|
|
Actions: 操作:對不同的業務場景使用不同的PPF配置。這可以讓運行時變快,因為檢查的條件和更少,配置的需要加載的Actions也更少。 |
|
|
Actions: 狀態檢查應當被視為計划條件建模,而不是初始條件。被計划條件填滿的Actions,會在應用初始化其刪除之前持續存在。在某些情況下,這可以導致不必要的PPF選擇報表的長時間運行。 |
|
|
預約:在日期配置信息中移除不需要的日期,例如如果你沒有使用賬單計划的話 |
|
|
修改文檔:檢查是否可以無效化某個文檔的修改功能。(可以通過業務類型自定義使其無效,標識是‘No Change Docunments’) |
|
關於Actions的更多信息,請參考Action profiles in SAP CRM
Web Client UI 框架
|
只把需要的視圖/assignment blocks放置在UI上面。如果視圖/assignment blocks不是經常需要的,使用懶加載模式。 |
|
|
不在組件控制器中的DO_PREPARE_OUTPUT方法中使用性能昂貴的代碼,因為在每次往返過程中,它都要被處理。 |
|
|
不要只是為了防止讀取到緩存中未更新的數據而繞過BOL緩存。要尋找數據不一致的原因,並且修改其中的問題。 |
|
|
不使用復雜的綁定(更新一個節點,將引發多個其它節點的更新,以及/或者一串其它節點)。 |
|
|
注冊事件時,不要忘記解除注冊(否則,事件處理器將仍然被調用,甚至在不再需要的情況下)。 |
|
|
在UI組件中,不使用ALL組件集。否則會消耗不必要的內存。 |
|
本文鏈接:http://www.cnblogs.com/hhelibeb/p/6103685.html
英文原文:Performance Tips and Tricks