技術交流

HCP 人力資產規劃系統 代碼效能優化小技巧

趙金金 趙金金

代碼效能優化 為 HCP 帶來高運行速度

HCP(Human Capital Planner;人力資產規劃系統)為企業整體營運策略及人事管理的核心系統,對資料處理的要求相當高,處理速度一定要快。倘若代碼處理時間過長,則會影響整個系統的速度。

近期有客戶提出系統的運行速度比上線初期慢,並提供數隻速度緩慢的程式供我們查看。在經過了 DB (Oracle Database;Oracle 資料庫)優化、磁片空間分析以及索引的重建等一系列操作後,發現還有部分程式仍存在運行速度慢的情況。此種情況下,我們需要再針對客戶提出的程式進行逐一查看,定位到可以優化的代碼,進行效能分析、優化來提高其運行的速度。

解決思路

為客戶進行效能分析時,一般採用的方式有兩種

  • 將程式單獨執行,查看對應的 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 欄位中可以很直觀的看出哪段代碼耗時最多。
Profier 中各欄位的含義如下:
欄位名稱 含意
Unit 單位名稱,即執行的存儲過程,包括其調用的過程
Line 代碼行號
Total time 此行執行時間(顏色長度表示本行代碼的執行時間與最長代碼執行時間的百分比圖)
Occurrences 此行執行次數
Text 對應代碼行,對於加密的代碼,將不能顯示
Average time 平均執行時間
Maximum time 最大執行時間
Minimum time 最小執行時間(以上三個時間預設不顯示,可以通過配置對話方塊選擇顯示)

注意:Text 欄位元清單中顯示的原始程式碼只顯示一行,如果要定位則可以在對應的行中點擊右鍵,選擇[Go to unit line] ,這樣就會直接跳到對應的原始程式碼位置。如下圖所示:

對應的原始程式碼

HCP 團隊達成客戶要求不遺餘力

一直以來,應用管理系統的使用效能是客戶關注的重點,也是我們 HCP 人力資產規劃系統的目標之一。在技術演進、商業模式更迭、競爭加劇的需求下,使得客戶對問題快速回應、故障準確定位、緊急恢復和現場處理提出了更高的要求。HCP 團隊持續致力於運用更好的方式,借助於更快捷的工具,更快速的為客戶解決問題,期望帶給客戶更好的產品體驗。