【问题标题】:Is there a tool to load test a PLSQL是否有负载测试 PLSQL 的工具
【发布时间】:2011-12-25 07:27:25
【问题描述】:

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

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

【问题讨论】:

  • 这里有一篇有趣的文章:dba-oracle.com/t_benchmark_testing.htm
  • JDBC 出了什么问题?调用存储过程的开销应该可以忽略不计(与过程的运行时相比)
  • @a_horse_with_no_name:我们已经有了一些 JDBC 测试结果,我们想进一步拆分为仅 DB。在 Oracle 驱动程序上启用 DEBUG 是否有助于计算实际所用时间?

标签: performance oracle stored-procedures plsql


【解决方案1】:

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

这些工具之所以具有此功能,是因为它们通常在市场上存在了五年之久,当时客户端=服务器的标准是两层数据库厚客户端架构。自 2000 年以来出现在市场上的大部分内容几乎都是网页版。

【讨论】:

    【解决方案2】:

    我不认为单元测试工具是正确的方法,因为您并没有真正对功能做出断言。通过负载测试,您想知道一个过程如何处理大量数据,以及它是否被调用了很多次。

    因此,您可能希望在循环中或针对一张大桌子运行它,并使用分析器来查找靴子。如果您使用的是 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;
    /
    

    显然,这不会帮助您生成用于负载测试的大量数据。这总是最难的部分:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多