关键词不能为空

当前您在: 主页 > 英语 >

pays(完整版)数据库性能测试方法讨论

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-28 01:34
tags:

pays-阻焊剂

2021年1月28日发(作者:grade怎么读)


数据库性能测试方法讨论



发布时间


: 2008-5-04 16:18




作者


:


陈嘉祥



王治



方耀等





来源


: 51Testing



稿



字体


:











|


上一篇



下一篇


|


打印



|


我要投稿



|


每周一问,答贴有












摘要:在


LOADRUNNER


中使用脚本 和


JAVA


程序进行


数据库性能测试< /p>












关键词:


LOADRUNNER



JAVA, Benchmark


一、



前言











在测试


工作


中经常需要对数据库进行性能测 试,以对数据库进行调优,保


证数据库的稳定和高效。











本文使用常用的性能测试工具


LOADRUNNER



JAVA


和专用数据库性能测试工

< br>具


Benchmark



讨论数 据库性能测试的不同方法,


希望能抛砖引玉,


寻找出更新更好的 方法。



二、



任务引入











数据库性能测试的需求,一般来源于下面几个方面:



1




数据库调优;



2




数据库选型;



3




数据库服务器选型;



4




其他;



下面,就针对于这些常用的需 求,列举几个不同的实例,共享一下测试方法。



1)


LOADRUNNER


应用











测试任务:评估某项目的核心业务逻辑(数据查询、数据复用、抽取同步

整合)


在不同压力下的性能表现,判断系统瓶颈,


得到最优 系统配置参数和建议,


并为数据


库的试运行工作提供可靠的性能 可行性依据;











数据查询性能指标:


900


个用户并发,平均响应时间在


3


秒以内;











数据库性能测试需求:数据库调优或服务器选型;



include


Action()


{


static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};


static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =


{









{LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}


};


static void FAR *


static void FAR *


static void FAR *


static void FAR *


static void FAR *


unsigned long


































OraEnv1;


OraSvc1;


OraSrv1;


OraSes1;


OraStm1;




rownum;


lrd_init(&InitInfo, DBTypeVersion);


lrd_initialize_db(LRD_DBTYPE_ORACLE,3, 0);


lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0);


lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc1, 0);


lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv1, 0);


lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes1, 0);


//


连接数据库



lrd_server_attach(OraSrv1,


lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv1, 0, 0);


//


设定数据库密码



lrd_ora8_attr_set(OraSes1, USERNAME,


lrd_ora8_attr_set(OraSes1, PASSWORD,


//


初始化连接


session


lrd_ora8_attr_set_from_handle(OraSvc1, SESSION, OraSes1, 0, 0);


//


开始连接数据库



lrd_session_begin(OraSvc1, OraSes1, 1, 0, 0);


lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm1, 0);


//


设定查询语句



lrd_ora8_stmt(OraStm1,



* FROM T_TASK_ALARM_TYPE WHERE


TYPE_CODE=7


0);


//


执行查询语句



lrd_ora8_exec(OraSvc1, OraStm1, 0, 0,&rownum, 0, 0, 0, 0, 1);


//


释放连接数据库的各种变量



lrd_handle_free(&OraStm1, 0);


lrd_session_end(OraSvc1, OraSes1, 0, 0);


lrd_server_detach(OraSrv1, 0, 0);


lrd_handle_free(&OraEnv1, 0);


//lrd_end(0);



return 0;


}










上面的


LoadRunner


脚本在


Virt ual User Generator


调试通过后,在


Con troller


中打开,用


900


个模 拟用户并发测试,即可得出性能指标(


LoadRunner


的 操作


这里就不在赘述,


google


一 下)。











从上面的例子看出,


此应用比较难懂 ,



LoadRunner


专属的方法 ,


而且可


扩展性不强。如果再遇到


其他


类型的数据库测试,


协议将会是一个很大的问题。所以,


为了


容易理解,可扩展性强,引出了下面的


J AVA


应用方法。



2)


JAVA


应用











测试任务:测试待选的数据库的性能;











数据查询性能指标:


20


个用户并发,每秒 执行增删改语句数不少于


1000


条;











数据库性能测试需求:数据库选型;



import .*;


import


import ties;


public class testsybase {





String sDbDriver =





String sConnStr =





private Connection conn = null;





private Statement stmt = null;





ResultSet rs = null;





public testsybase()





{







try {











e(sDbDriver);









} catch (otFoundException e) {













n(









}





}





public void executeUpdate()






{










stmt = null;










rs = null;










try {














conn = nection(sConnStr,















stmt = Statement();














n(new Date());














int j=0;














for(int i=0;i<10000;i++){


















j=10001+i;


















//


追加



















sql=



















//


更新



















//sql=


field_no='testupdate',*,*... where filed_no=


































































//


删除



//sql=


from


tablename


where


tablename=



//


查询











tablename=








































































































































}


































//sql=






























}











eUpdate(sql);


//rs=eQuery(sql);


//();






n(new Date());






//();






();






();






n(


} catch (SQLException ex) {






n(


+


sage());


}



public void executeSql(String sql)


{






stmt = null;






rs = null;






try {










conn = nection(sConnStr,










stmt = Statement();










rs=eQuery(sql);










();










n(










();










();










//n(






} catch (SQLException ex) {










n(






}


}





public static void main(String[] args) {









testsybase mytest = new testsybase();









eUpdate();





}


}










上面的


java

代码调试通过后,


可以通过注释不同的代码段,


分别测试增 加、


修改、删除、查询的等情况的性能,并得出时长,反算出性能。










这里说明一点,


java


代码即可以单独的 打成


jar


包,放在服务器上运行,


也 可以直接在本地


IDE


运行。如果觉得


LoadRunner


专业,也可以放到


LoadRunner


里运行,


选择


Java


Vuser


协议,


这里需要注意的是,


LoadRunner


运行时,


需要设置好


Runtime


Settings


中的


Classpath


,代码运行需要的


jar


包都要加到这里。提醒一点的是,笔者使用的是


LoadRun ner 8.0


,在跑上面的代码时,使用的是


Java 1. 4


的虚拟机,高版本如


1.5


就不能< /p>


成功运行。











从这个例子可以看出,此种应用灵 活性强,任何数据库都可以做测试,只


要有提供的驱动即可,


如 果需要,


还可以扩展其他的方法。


但测试人员需至少掌握一种高 级


编程语言,


对数据库操作也必须很熟悉,

要求较高,


所以又引出了下面的


Benchmark


的应用


方法。



3) Benchmark


应用



1.


引言




诚然上述的编写代码以进行数据库性能测试,


对于初级测试员来说还显得有点 难度,


如何才能使用比


较简单的方法进行测试呢?这里将会介绍


Quest


公司的


Benchmark Factory


,它以向导的方式一步步指引


你开展测试,是一 个很容易上手的工具。



2.


模型设计




假设有一个正在使用的数据库,库中有相当数量的数据,作为支撑某个系统用。每天上班时间中大 概



500


人次的

A


表写入记录,也大约有


500


人 次的


A


表查询;系统的程序每天大概会往数据库的


B


表写



50000


条记录,以及


5000


C


表记录,还有


1000



A


表记录,删除


500



A


表记录,更新


100

< p>


D


表记录;然后管理员要对

B


表、


C


表及

D


表进行


50


人次查询。根据二八 原则,百分之八十的工作在百分


之二十的时间内完成,即上述列出的工作量,其


80%


将在


1.6


小时 完成。




另外作为对 比,本次测试再对该模型进行缩减处理,即在二八原则的基础上,工作量及时间都缩减为


原来的


10%





最终的结果是


10< /p>


分钟内,对数据库进行的查询操作有


40



A


表查询、


BCD

< br>表各


4


条查询;写操作



120



A


表记录、


4000



B


表记录、


400



C

< br>表记录;更新操作有


8



D


表记录;删除操作有


40



A


表记录。



3.


语句构建




相关的


SQL


语句构建如下:

< br>


1


、查询


A

< br>表



select * from A


2


、查询


B




select * from B


3


、查询


C




select * from C


4


、查询


D




select * from D


5


、写入


A




insert into A (a,b,c) values (1,2,3)


6


、写入


B




insert into B(e,f,g) values (4,5,6)


7


、写入


C




insert into C(h,i,j) values (7,8,9)


8


、更新


D




update D set k = $$BFRand(100)

9


、删除


A


表记录



delete from A WHERE ROWNUM<=1


注:


$$BFRand(100)



Benchmark Factory


提供的一个随即函数。



4.


方案建立




Benchmark Factory


里面建立好


ORACLE



prof ile


后,新建一个


Scenario


(Create a custom load scenario)



因为有多个


SQL

< br>语句,所以类型选择混合


(Mix)




接着选择添加


SQL


语句








一一填写完成并根据模型设计赋予不同的权重


(Weight)

pays-阻焊剂


pays-阻焊剂


pays-阻焊剂


pays-阻焊剂


pays-阻焊剂


pays-阻焊剂


pays-阻焊剂


pays-阻焊剂



本文更新与2021-01-28 01:34,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/575996.html

(完整版)数据库性能测试方法讨论的相关文章