如何使用loadrunner测试SQL查询语句的性能

如题所述

第一步测试准备 第二步配置ODBC数据源 第三步录制SQL语句在Sql Server查询分析器中的运行过程 第四步优化录制脚本设置事务 第五步改变查询数量级查看SQL语句的性能 第六步在controller中运行脚本 下面开始具体的介绍 测试准备阶段我们首先要确认测试数据库服务器我们可以在本地安装SQLSERVER数据库服务端及客户端也可以确定一台装好的SQL SERVER服务器 接下来准备测试数据对数据库测试时我们要考虑的不是SQL语句是否能够正确执行而是在某数量级的情况下SQL语句的执行效率及数据库服务的运行情况所以我们分别准备不同数量级的测试数据即根据实际的业务情况预估数据库中的记录数在本次讲解中我们不考虑业务逻辑也不考虑数据表之间的关系我们只建立一张表并向此表中加入不同数量级的数据如分别加入条条条条数据查看某SQL语句的执行效率 在查询分析器中运行如下脚本 创建测试数据库 create database loadrunner_test; use loadrunner_test 创建测试数据表 create table test_table (username varchar()sex intage intaddress varchar()post int) 通过一段程序插入不同数量级的记录具体的语法在这里就不多说了 declare @i int set @i=while @i< //循环次可以根据测试数据情况改变插入条数 begin BEGIN TRAN T insert into test_table (usernamesexageaddresspost) values (户瑞海+cast(@i as varchar)@i@i+北京市和平里+cast(@i as varchar)+号); IF @@ERROR <> begin rollback; select @@error end else begin commit; set @i = @i+ end end 好了执行完上述语句后建立的数据表中已经有条记录了下面进行第二步的操作配置ODBC数据源为了能让loadrunner能够通过ODBC协议连接到我们建立的SQL SERVER数据路我们需要在本机上建立ODBC数据源建立方法如下 控制面板—性能和维护—管理工具—数据源(ODBC)添加在列表中选择SQL SERVER点击完成根据向导输入数据源名称链接的服务器下一步输入链接数据库的用户名和密码更改链接的数据库完成ODBC的配置如果配置正确的话在最后一步点击测试数据源会弹出测试成功的提示 配置好ODBC数据源后就要录制SQL语句在查询分析器中的执行过程了 打开loadrunner选择ODBC协议 在start recording中的application type 选择win applicationprogram to record中录入SQL SERVER查询分析器的路径\安装目录\isqlwexe 开始录制首先通过查询分析器登录SQL SERVER在打开的查询分析器窗口中输入要测试的SQL语句如select * from test_table; 在查询分析器中执行该语句执行完成后结束录制 好了现在就可以看到loadrunner生成的脚本了(由于脚本过长在这里就不粘贴了有需要的朋友可以加我QQ我把脚本发给你们)通过这些语句我们可以看出登录数据库的过程执行SQL语句的过程 接下来我们来优化脚本我们分别为数据库登录部分和执行SQL语句的部分加一个事物在增加一个double的变量获取事务执行时间简单内容如下 Action() { double trans_time; //定义一个double型变量用来保存事务执行时间 lr_start_transaction(sqserver_login); //设置登录事务的开始 lrd_init(&InitInfo DBTypeVersion); //初始化链接(下面的都是loadrunner生成的脚本了大家可以通过帮助查到每个函数的意思) lrd_open_context(&CtxLRD_DBTYPE_ODBC ); lrd_db_option(Ctx OT_ODBC_OV_ODBC ); lrd_alloc_connection(&Con LRD_DBTYPE_ODBC Ctx /*Unused*/ ); ……………… trans_time=lr_get_transaction_duration( sqserver_login ); //获得登录数据库的时间 lr_output_message(sqserver_login事务耗时 %f 秒 trans_time); //输出该时间 lr_end_transaction(sqserver_login LR_AUTO); //结束登录事务 lr_start_transaction(start_select);//开始查询事务 lrd_cancel( Csr /*Unused*/ ); lrd_stmt(Csr select * from test_table;\r\n /*None*/ );//此句为执行的SQL lrd_bind_cols(Csr BCInfo_D ); lrd_fetch(Csr PrintRow ); …………… trans_time=lr_get_transaction_duration( start_select ); //获得该SQL的执行时间 lr_output_message(start_select事务耗时 %f 秒 trans_time); //输出该时间 lr_end_transaction(start_select LR_AUTO); //结束查询事务 优化后在执行上述脚本后就可以得到登录到数据库的时间及运行select * from test_table这条语句的时间了当然我们也可以根据实际情况对该条语句进行参数化可以测试多条语句的执行时间也可以将该语句改为调用存储过程的语句来测试存储过程的运行时间 接下来把该脚本在controller中运行设置虚拟用户数设置集合点这些操作我就不说了但是值得注意的是没有Mercury 授权的SQL SERVER用户license在运行该脚本时回报错提示You do not have a license for this Vuser type Please contact Mercury Interactive to renew your license我们公司穷啊买不起loadrunner所以我也无法继续试验希望有license朋友们监控一下运行结果! 最起码在VUGen中运行该脚本我们可以得到任意一个SQL语句及存储过程的执行时间如果我们测试的B/S结构的程序我们也可以通过HTML协议录制的脚本在CONTROLLER中监控SQL SERVER服务器的性能情况这样两方面结合起来就可以对数据库性能做一个完整的监控了
温馨提示:答案为网友推荐,仅供参考