- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈存储过程在性能测试中的应用
浅谈存储过程在性能测试中的应用
Ⅰ.背景介绍:
在信息化时代的今天,信息管理软件日益发展强大。随着数据量的激增,人们对于软件的性能越来越关注。性能测试变得越来越重要。负载和数据容量测试是重要的性能测试类型。如何快速创建大量的有效数据成为性能测试的前提条件。在本文中,我们结合oracle数据库介绍一种快速插入数据的方法,即存储过程构造数据法。这种方法应用方便,直接在数据库端编写和运行代码,方便调试和维护,为性能测试创造有利的数据条件。
Ⅱ.存储过程的定义:
存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
来看“数据准备”这一过程,根据这一需求进行性能测试。要模拟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 i
文档评论(0)