Oracle 9i&10g编程艺术 性能测试

      汗,写上篇笔记已经是去年的事情了。时间过得真快啊,在这里已经工作了一年多了,感觉自己什么都没学到似的,或者说没有钻研过。从一开始用C,后来体验了 下Linux,学了点内核和Shell的皮毛,正打算将以后的方向定在unix平台/c语言开发的时候,猛然发现,在目前的岗位上,根本得不到什么应用。 遂弃之。如今选择了PL/SQL,就要精通业务逻辑,刚开始的这段时间尤其痛苦,这存储过程里的业务逻辑并不是那么容易看出的。加油吧。

      人生啊,虚度年华,荒废光阴了。

 

    上次配置好了环境,接下来,就要准备一个工具用来检测不同方法的性能差异。Tom大师建议我们开发人员都应该有个自己用来测试各种想法的测试数据库 (test bed), 我在其他的工作中也遵循了这样的做法,专门建立一个SandBox目录,本着“小马过河”的精神,检验自己的千奇百怪的猜想。

RunStats工具

     作用是分析sql的实际性能,主要从三个方面来考查:

A. 墙上时钟(wall clock)/耗用时间(elapsed time):消耗时间;

B. 系统统计结果: 显示每个方法执行各步骤时发生的次数;

C. 闩定(latching):轻量级的锁,有点像多线程里的mutex,应用中应使内部闩越少越好,这样可以保证应用的可扩展性。

 

1. 创建视图

1 create or replace view stats
2 as select 'STAT...' || a. name name , b.value
3      from v$statname a, v$mystat b
4      where a.statistic# = b.statistic#
5      union all
6      select 'LATCH.' || name , gets
7      from v$latch;

2. 创建临时表

1 create global temporary table run_stats
2 ( runid     varchar2(15),
3    name       varchar2(80),
4    value     int
5 )
6 on commit preserve rows ;

 

3.  创建RunStats包;

01 --runstat统计测试包
02  
03 create or replace package runstats_pkg
04 as
05      procedure rs_start;
06      procedure rs_middle;
07      procedure rs_stop( p_difference_threshold in number default 0 );
08 end ;
09 /
10 create or replace package body runstats_pkg
11 as
12    g_start  number;
13    g_run1  number;
14    g_run2  number;
15     
16 procedure rs_start
17 is
18 begin
19      delete from run_stats;
20       
21      insert into run_stats
22      select 'before' , stats.* from stats;
23      g_start := dbms_utility.get_time;
24 end ;
25  
26 procedure rs_middle
27 is
28 begin
29      g_run1 :=  (dbms_utility.get_time - g_start);
30       
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值