PL/SQL代码性能瓶颈可以通过DBMS_PROFILER包在命令行的方式下进行剖析来直接获得。对于比较复杂的代码而言,使用图形化的界面来进行剖析无疑是首选。PL/SQL Developer依旧依赖于DBMS_PROFILER包,使用图形化界面来剖析PL/SQL代码,如匿名块,包,过程,函数等,其Profiler结果将列出该剖析代码涉及到的所有包,过程函数等并且可以按照不同的列类型进行排序等。本文以图文的形式介绍了PL/SQL Developer 下实现PL/SQL 代码剖析。
1、配置Profiler面板 单击Tools--->Preferences--->Profiler,下面是对应的配置描述(当前的演示版本9.0.0.1601) Available Columns --可用列(可以移动到右边) Selected Columns --已选择的列 Time units --时间单位(秒、毫秒、微秒) Show 0 occurrences --是否显示执行0次的处理语句 Graphical time display --用图形显示处理时间的颜色深度百分比
2、匿名代码段剖析示例
下面是剖析之后的结果图:可以看出第7行耗用了最多的时间
3、包和过程代码剖析示例
下面是剖析之后的结果,注意下图中红色圈,右边Text列包含了该过程下调用的其他包过程或函数等
下图是按Total time排序之后的结果,可以看到当前的这个包耗用时间最多的部分集中在SQL部分,因此可以集中精力对这些SQL进行tuning。
下图是剖析包调用的所有模块,后面跟的是其耗用的总时间
4、剖析结果相关说明 a、Profiler面板工具栏 Profiler面板选项卡依次从左往右按钮, --配置profiler --刷新 --删除当前结果 --run当前代码运行起始时间 --Unit则是该代码调用所有涉及到的模块,缺省为所有单元执行的总时间,切换到单元模块则对应该单元模块总时间
b、显示结果列的相关说明 unit --单元名称,即执行的存储过程,包括其调用的过程,匿名块等 line --代码行号 total time --该行代码的执行时间(颜色长度代表该行代码的执行时间与最长代码执行时间的百分比图) occurrences --此行执行次数 text --对应得代码行,加密行无法显示 Average time —平均运行时间 (这个三个时间默认不显示,如果在profiler配置块设置则显示) maximum time --最大运行时间 minimum time --最小运行时间
c、定位代码行 Profiler 结果Text文本仅显示整条代码的行首部分,对于剩余部分可以在对应的行中打开右键,选择[Go to unit line]会直接跳到对应的源代码位置
d、Profiler结果排序 可以对Profiler结果不同的字段进行排序,只需单击对应列名右侧方块即可。如需要排序Total time列则单击Total time列右侧方块变成下三角。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有