ARES 资通电子报 yyyy.mm
  • 技术交流

HCP 人力资本规划系统 代码性能优化小技巧

author by 赵金金
关键词:HR、人资、人资系统、Oracle代码、性能优化、PL/SQL、Profiler

代码性能优化 为系统带来高运行速度

HCP(Human Capital Planner;人力资产规划系统)为企业整体营运策略及人事管理的核心系统,对数据处理的要求相当高,处理速度一定要快。倘若代码处理时间过长,则会影响整个系统的速度。

近期有客户提出系统的运行速度比上线初期慢,并提供数只速度缓慢的程序供我们查看。在经过了 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 字段中可以很直观的看出哪段代码耗时最多。
Profier 中各字段的含义如下:
域名 含意
Unit 单位名称,即执行的存储过程,包括其调用的过程
Line 代码行号
Total time 此行运行时间(颜色长度表示本行代码的运行时间与最长代码运行时间的百分比图)
Occurrences 此行执行次数
Text 对应代码行,对于加密的代码,将不能显示
Average time 平均运行时间
Maximum time 最大运行时间
Minimum time 最小运行时间(以上三个时间默认不显示,可以通过配置对话框选择显示)

注意:Text 字段元列表中显示的源代码只显示一行,如果要定位则可以在对应的行中点击右键,选择[Go to unit line] ,这样就会直接跳到对应的源代码位置。如下图所示:

对应的源代码

HCP 团队达成客户要求不遗余力

一直以来,应用管理系统的使用性能是客户关注的重点,也是我们 HCP 人力资产规划系统的目标之一。在技术演进、商业模式更迭、竞争加剧的需求下,使得客户对问题快速响应、故障准确定位、紧急恢复和现场处理提出了更高的要求。HCP 团队持续致力于运用更好的方式,借助于更快捷的工具,更快速的为客户解决问题,期望带给客户更好的产品体验。