我知道utplsql用于单元测试,有没有办法在循环中使用它来加载测试我的存储过程?
我不想使用JMeter或浏览任何JDBC驱动程序 - 只是试图分析vanilla Stored Proc的性能
答案 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年以来出现在市场上的大多数东西都只是网络上的。