代碼效能優化 為系人資系統帶來高運行速度
HCP 為企業整體營運策略及人事管理的核心系統,對資料處理的要求相當高,處理速度一定要快。倘若代碼處理時間過長,則會影響整個系統的效能。
近期有客戶提出系統的運行速度比上線初期慢,並提供數隻速度緩慢的程式供我們查看。在經過了 DB 資料庫優化、磁片空間分析以及索引的重建等一系列操作後,發現還有部分程式仍存在運行速度慢的情況。此種情況下,我們需要再針對客戶提出的程式逐一查看,定位到可以優化的代碼後分析效能與優化來提高其運行的速度。
解決思路
為客戶進行效能分析時,一般採用的方式有兩種:
- 將程式單獨執行,查看對應的 Session 下面 Lock 表的情況,以此來定位需要優化的程式碼片段。此種方法對 IT 來說可能需要多花時間查看哪些部分運行時耗時過多,而且當程式中涉及的表太多時,該種方式就不太適用了。
- 針對程式碼片段直接 Test 單步運行,查看哪些部分運行速度慢。但當程式較為複雜且代碼量較大時,此種方式過於耗時,定位速度慢。
基於此類情況下,將採用快速定位代碼瓶頸的 PL/SQL Profiler 工具,快速定位到需要優化的代碼,對代碼塊效能瓶頸部分,進行具體的分析,解決客戶的問題。
Profiler 使用方法
Profiler 是個非常厲害的 PL/SQL 效能優化工具,可獲取已執行的每行代碼、時間與次數的消耗情況,它不需生成和讀取伺服器端的跟蹤檔,將跟蹤數據全部存儲在資料庫表裡,分析起來較快速又直觀。
下面就為大家詳細介紹如何在 PL/SQL Developer 中使用 Profiler。為講述方便,以存儲過程 Hr_get_sickdays 為例,實際操作步驟如下:
- 按右鍵要跟蹤運行的過程,點擊 Test,彈出測試窗口。
- 左鍵按一下 Create Profiler Report(建立分析器報告)按鈕,新建 Profiler。
- F8 執行存儲過程或者直接點擊執行按鈕,執行完畢後切換到 Profiler 選項卡,從 Total time 欄位中可以很直觀的看出哪段代碼耗時最多。
欄位名稱 | 含意 |
---|---|
Unit | 單位名稱,即執行的存儲過程,包括其調用的過程 |
Line | 代碼行號 |
Total time | 此行執行時間(顏色長度表示本行代碼的執行時間與最長代碼執行時間的百分比圖) |
Occurrences | 此行執行次數 |
Text | 對應代碼行,對於加密的代碼,將不能顯示 |
Average time | 平均執行時間 |
Maximum time | 最大執行時間 |
Minimum time | 最小執行時間(以上三個時間預設不顯示,可以通過配置對話方塊選擇顯示) |
注意:Text 欄位元清單中顯示的原始程式碼只顯示一行,如果要定位則可以在對應的行中點擊右鍵,選擇[Go to unit line] ,這樣就會直接跳到對應的原始程式碼位置。如下圖所示:
HCP 團隊達成客戶要求不遺餘力
一直以來,應用管理系統的使用效能是客戶關注的重點,也是我們 HCP 人力資產規劃系統的目標之一。在技術演進、商業模式更迭、競爭加劇的需求下,使得客戶對問題快速回應、故障準確定位、緊急恢復和現場處理提出了更高的要求。HCP 團隊持續致力於運用更好的方式,借助於更快捷的工具,更快速的為客戶解決問題,期望帶給客戶更好的產品體驗。