導言
本頁面打算收集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(比如行項目層級的事件回調),這對性能來說極為關鍵,特别是在處理大量項目的時候。 在僅僅是讀取目前項目所在層級的時候,應使用函數CRM_ORDERADM_I_STRUCT_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定價公式實作的基本準則: - 不要進行表通路。自建表的讀取不會被IPC緩存,是以應當在CRM服務端實作定價準備步驟。 I - 在使用者出口(user exit)的實作中,避免運作時錯誤(空指針異常)。 - 在使用者出口處避免使用循環。 |
CRM功能自定義
Actions:保持條件盡可能的簡單,不管它是一個計劃(scheduling condition)或者是初始條件(starting conditions)。這使得Actions條件和報表查詢的速度更快。 | ||
Actions:對複雜的計劃和起始條件使用各自的BAdI EVAL_SCHEDCOND_PPF 或EVAL_STARTCOND_PPF來實作,這樣可以獲得比使用基于工作流的條件更高的性能。基于條件的工作流通常會由一個解釋器來解釋并且通路資料,這會成為性能的瓶頸。 | ||
Actions: 操作:對不同的業務場景使用不同的PPF配置。這可以讓運作時變快,因為檢查的條件和更少,配置的需要加載的Actions也更少。 | ||
Actions: 狀态檢查應當被視為計劃條件模組化,而不是初始條件。被計劃條件填滿的Actions,會在應用初始化其删除之前持續存在。在某些情況下,這可以導緻不必要的PPF選擇報表的長時間運作。 一個初始條件應該隻是導緻導緻action運作的延遲,條件的其它部分必須是計劃條件的一部分。 | ||
預約:在日期配置資訊中移除不需要的日期,例如如果你沒有使用賬單計劃的話 | ||
修改文檔:檢查是否可以無效化某個文檔的修改功能。(可以通過業務類型自定義使其無效,辨別是‘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