Oracle’s DBMS_Profiler:PL/SQL 性能调整
DBMS_PROFILER 包举例
下面是我提供的怎样使用配置的简单例子,运行配置文件来测试下面例程的性能. 例程用到的自定义脚本紧随其后.
1. 创建过程.
2. 用配置文件调用例程
3. 评估执行时间:
执行eavluate_profiler_results.sql脚本,得到时间统计
4. 正如你看到的,第三行执行时间提高到86毫秒.但是改变if语句,重新执行上面的过程,将会得到新的结果:
5. 正如你看到的, 这种情境下第三行执行时间从86毫秒减少到8毫秒,多余的时间是由于内置trunc()函数引起., 这种情境下如果第一个条件为false,则不会执行trunc()函数.这仅仅是个简单的例子,当你测试的例程越大,你面临的挑战更大.
这个配置结果也证明了执行期间代码被覆盖多少行,从而让我们知道处于性能监视中的代码范围。如果任何PL/SQL块性能出现问题,它也能提炼出各种不同情景的正在在执行的代码并检查配置结果,从而查明问题所在。
6. 对于一个特定的情景,如果执行一段特殊的代码段,可以得到合理的分析,即使代码根本一点都不能运行。
环境的创建
默认安装或数据库的创建状态下,DBMS_PROFILER包不会自动安装,请DBA用profload.sql脚本创建它.用一个权限较大的或一个单独的用户,创建存储统计信息的表。如果
用如SYS用户创建,则给其它用户授予DML权限,并且对这些表创建一个共同的简写名.
创建表的如下:
PLSQL_PROFILER_RUNS表:PL/SQL配置的运行细节.
PLSQL_PROFILER_UNITS表:运行中每一个库单元的信息.
PLSQL_PROFILER_DATA表:所有配置文件运行时的数据累积.
PLSQL_PROFILER_RUNNUMBER序列提供了RUNID
运行和解释配置数据
ORACLE提供了三个表来统计,填充RUNID。有许多第三方的工具可以提供自定义的基于这些数据的报告,ORACLE提供profrep.sql脚本评估数据(在
undef name
结论
DBMS_PROFILER是非常强大的工具,其一就是可以识别PL/SQL的性能问题.这个工具最好用在开发时期,用来调整基于各种应用的情景的代码,它也能用很好的调整已在使用中的例程并且采取显而易见的时间去执行。总之,这个工具可以给每一行代码给予性能统计,它可以帮助我们评估和调整到一个出色的水平,当检查SQL语句的性能问题时,PL/SQL代码不应该忽略,相反应该调整到最佳的结果.