是否有工具加载测试PLSQL

时间:2011-11-09 13:02:06

标签: performance oracle stored-procedures plsql

我知道utplsql用于单元测试,有没有办法在循环中使用它来加载测试我的存储过程?

我不想使用JMeter或浏览任何JDBC驱动程序 - 只是试图分析vanilla Stored Proc的性能

2 个答案:

答案 0 :(得分:4)

我认为单元测试工具不是正确的方法,因为你并没有真正对功能做出断言。通过负载测试,您想知道过程如何使用大量数据运行,如果它被多次调用。

因此,您可能希望在循环或大表中运行它并使用分析器来查找bootlenecks。如果您使用的是11g,则应该查看the built-in hierarchical profiler

这样的事情:

begin
    DBMS_HPROF.START_PROFILING (
       location    => 'PROF_DATA_FILE_DIR'
       , filename    => 'HPROF_RUN1_20111109'
       );

    some_pkg.generate_lots_of_work(p_id => 1234);

    DBMS_HPROF.STOP_PROFILING;

end;
/

或循环:

begin
    DBMS_HPROF.START_PROFILING (
       location    => 'PROF_DATA_FILE_DIR'
       , filename    => 'HPROF_RUN2_20111109'
       );

    for i in 1..1000
    loop
        some_pkg.do_this(p_num => i);
    end loop;

    DBMS_HPROF.STOP_PROFILING;

end;
/

显然,这对于为负载测试生成大量数据无济于事。这一直是最难的部分:)

答案 1 :(得分:0)

所有经典供应商性能测试工具,LoadRunner,Silk Performer,QALoad和Rational Performance Tester都具有直接数据库功能,可以直接或针对存储过程对查询执行性能测试。

这些工具具有此功能的原因是因为当客户端=服务器的标准是双层数据库胖客户端架构时,它们通常在市场上存在了五年。自2000年以来出现在市场上的大多数东西都只是网络上的。