收藏 分销(赏)

浅谈存储过程在性能测试中的应用.doc

上传人:仙人****88 文档编号:11987459 上传时间:2025-08-25 格式:DOC 页数:5 大小:161.50KB 下载积分:10 金币
下载 相关 举报
浅谈存储过程在性能测试中的应用.doc_第1页
第1页 / 共5页
浅谈存储过程在性能测试中的应用.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
浅谈存储过程在性能测试中的应用 Ⅰ.背景介绍: 在信息化时代的今天,信息管理软件日益发展强大。随着数据量的激增,人们对于软件的性能越来越关注。性能测试变得越来越重要。负载和数据容量测试是重要的性能测试类型。如何快速创建大量的有效数据成为性能测试的前提条件。在本文中,我们结合oracle数据库介绍一种快速插入数据的方法,即存储过程构造数据法。这种方法应用方便,直接在数据库端编写和运行代码,方便调试和维护,为性能测试创造有利的数据条件。 Ⅱ.存储过程的定义: 存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。在oracle中,复杂的应用规则和业务可以作为过程存储。存储过程是一组sql和pl/sql语句,它允许我们把加强的业务规则从应用移动到数据库中。存储过程允许被重复使用,使用存储过程大大提高数据的访问效率和提升应用系统的性能。 Ⅲ.存储过程使用前提: 为了创建一个过程对象,必须拥有创建procedure的系统权限。如果此过程对象在另一个用户的领域中,则必须拥有create any procedure的权限。因为存储过程与数据库的表关联,所以过程的所有者必须对表有操作权限,而执行这些过程对象的用户并不需要在所给予的表上拥有特权,仅需要excute权限即可。 Ⅳ.存储过程应用于性能测试实例: 某系统为该市中考考生成绩查询系统。该市共有将近10万名考生,要求在查询成绩显示时间不大于5秒。 1. 下面是基本的性能测试流程: 来看“数据准备”这一过程,根据这一需求进行性能测试。要模拟10万名考生,显然通过系统逐条录入数据不太现实。这里通过存储过程将很轻松的解决这个问题。 2. 分析数据库中相关的表结构: 在插入有关联关系的表的数据时,首先要理清表之间的关联。从上图关联关系中可以看出: (1)首先构造学生基本表的数据,学生ID是主键,这里引用序列作为ID; (2)构造考试科目表的数据,科目ID是主键,引用科目序列作为ID; (3)构造成绩表的数据,成绩表引用学生表的ID和科目表ID作为成绩表的外键,这里运用游标来实现; 3. 编写脚本过程: ⑴ 创建序列: ① 创建学生表序列供引用: Create sequence student_seq Minvalue 1 Maxvalue 1000000 Start with 1 Increament by 1 Nocache; ② 创建科目表序列供引用: Create sequence subject_seq Minvalue 1 Maxvalue 10000 Start with 1 Increament by 1 Nocache; ⑵ 用存储过程依次创建学生基本信息表、科目表、成绩表的数据: ① 创建学生表数据: create or replace procedure pro_student is Studentid varchar2(20); Studentname varchar2(20); Studentsex varchar2(20); Studentage varchar2(20); Studentschool varchar2(100); Txtsql varchar2(1000); Layer1 number; Begin For layer1 in 1..100000 loop Txtsql := ‘insert into student ( student_id,student_name,student_sex,student_age,student_school ) values (’; Select student_seq.nextval into studentid from dual; Studentname := ‘,‘‘STU_‘||studentid||’’’’; Studentsex := ‘,‘‘女’’’; Studentage := ‘,‘‘14’’’; Studentschool := ‘,‘‘育民中学’’) ’; Txtsql := txtsql || studentid || studentname || studentsex || studentage || studentschool; Excute immediate txtsql; Commit; End loop; End pro_student; ② 创建科目表数据: create or replace procedure pro_subject is Subjectid varchar2(20); Subjectname varchar2(20); Txtsql varchar2(1000); Layer2 number; Begin For layer2 in 1..10 loop Txtsql := ‘insert into subject ( subject_id,subject_name) values (’; Select subject_seq.nextval into subjecid from dual; Subjectname := ‘,‘‘SUB_‘||subjectid||’’’)’; Txtsql := txtsql || subjectid || subjectname; Excute immediate txtsql; Commit; End loop; End pro_subject; ③ 创建成绩表: create or replace procedure pro_score is cursor cur1 is select s.student_id from student s; cursor cur2 is select t.subject_id from subject t; studentid varchar2(20); Subjectid varchar2(20); Begin Open cur1; Loop Begin Fetch cur1 into studentid; Exit when cur1%notfound; Open cur2; Loop begin Fetch cur2 into subjectid; Exit when cur2%notfound; Insert into score (student_id,subject_id,score) values (studentid,subjectid, ‘100’); Commit; End; End loop; Close cur2; End; End loop; Close cur1; End pro_score; ⑶ 调试和执行存储过程。在调试的过程中,如果oracle给出很多错误提示,这个时候一定不要着急,按照提示信息,逐行检查语法错误即可。有时候,调试的过程不报错,但是执行完了数据库中却没有数据,这一定是存储过程存在问题,才导致数据不能正常插入,所以还要检查。经过反复调试,最后成功执行。待执行成功后,学生表,考试科目表和成绩表的数据已经创建完毕,这时可以继续进行性能测试。 ⅴ.小结: 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译。性能测试是个反复的过程,而且确定需求后一般不会发生变更。这样,我们可以充分利用存储过程的优点:只要我们第一轮性能测试前准备好数据,以后只是执行即可,不需要重复准备这个过程。因此在性能测试中运用存储过程插入数据是一种不错的方法。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服