使用PL/SQL Developer剖析PL/SQL代码

简介:     PL/SQL代码性能瓶颈可以通过DBMS_PROFILER包在命令行的方式下进行剖析来直接获得。对于比较复杂的代码而言,使用图形化的界面来进行剖析无疑是首选。
+关注继续查看

    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列右侧方块变成下三角。

 

Oracle 牛鹏社    Oracle DBsupport

更多参考

使用 DBMS_PROFILER 定位 PL/SQL 瓶颈代码

对比 PL/SQL profiler 剖析结果

DML Error Logging 特性 

PL/SQL --> 游标

PL/SQL --> 隐式游标(SQL%FOUND)

批量SQL之 FORALL 语句

批量SQL之 BULK COLLECT 子句

PL/SQL 集合的初始化与赋值

PL/SQL 联合数组与嵌套表
PL/SQL 变长数组
PL/SQL --> PL/SQL记录

SQL tuning 步骤

高效SQL语句必杀技

父游标、子游标及共享游标

绑定变量及其优缺点

dbms_xplan之display_cursor函数的使用

dbms_xplan之display函数的使用

执行计划中各字段各模块描述

使用 EXPLAIN PLAN 获取SQL语句执行计划

目录
相关文章
|
3天前
|
SQL 数据库
使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
33 1
|
3月前
|
SQL JSON API
PHP读取数据库记录转换为JSON的代码(API接口的SQL语句)
PHP读取数据库记录转换为JSON的代码(API接口的SQL语句)
30 0
|
3月前
|
SQL Java
java代码中如何实现sql中 in字段的单引号?
java代码中如何实现sql中 in字段的单引号?
51 0
|
3月前
|
SQL 关系型数据库 MySQL
MySql SQL 脚本的可移植性,MySql 可以执行的注释代码
MySql SQL 脚本的可移植性,MySql 可以执行的注释代码
58 0
|
7月前
|
SQL BI 数据处理
十个SQL代码最容易出错的地方和解决方案
这十个代码错误处,是我在日常工作中总结的一些问题,同时也包括了我解决这些问题时采用的一些方法。这些方法仅供参考,具体还需要根据数据和业务需求进行调整,才能编写出正确的 SQL 代码。
174 0
|
8月前
|
SQL XML IDE
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
183 0
Fluent Mybatis 牛逼!做到代码逻辑和sql逻辑的合一
|
9月前
|
SQL 存储 关系型数据库
SQL 触发器详解及代码演示
SQL 触发器详解及代码演示
|
10月前
|
SQL XML Java
整理几个常用的sql和其他代码
整理几个常用的sql和其他代码
128 0
|
11月前
|
SQL XML Java
整理几个常用的sql和其他代码
整理几个常用的sql和其他代码
70 0
整理几个常用的sql和其他代码
|
SQL 数据库
使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
SAP ABAP 有些数据库表的字段名称,对于初学者来说不太友好,例如 USR01 表中的打印参数 SPLD, SPLG, SPDB, SPDA 等等。
119 0
使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
推荐文章
更多