数据库性能测试方法实例讲解_第1页
数据库性能测试方法实例讲解_第2页
数据库性能测试方法实例讲解_第3页
数据库性能测试方法实例讲解_第4页
数据库性能测试方法实例讲解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件性能测试与LoadRunner实战书籍样稿作者博客:网上订购地址:http:/www.china-第4章应用实例讲解4.1 一种特殊的数据库性能测试方法很多同志在进行数据方面性能测试时束手无策,前面在第二章的第二节我们已经介绍了如何应用ODBC协议录制LoadRunner 8.0自身带的“Flights-ODBC_Access”例子。这里作者为您提供另一种简便的方法。问题描述:一个面向全国各个中小学的信息管理系统,随着系统被广泛的应用,访问人数的急剧增加、数据量也在飞速增长,如何为用户提供方便、快捷的应用呢?4.1.1 数据库集群项目背景介绍经过公司相关技术人员的讨论,决定采用数据库的集群

2、技术来解决这些问题,将先前1台数据应用服务器扩展为台。数据库为Mysql,如果您关心数据库的集群技术,请查阅相关资料,在这里不再赘述。实施的整体思路是这样。由于操作人员主要是进行数据的插入工作,在某一段时间内操作人员比较集中,数据量也较大,为了估计集群后会给性能带来多大的提升,我们分别部署了两套运行环境,一套是先前的单一数据库应用服务器环境,另外一个则是三台数据库服务器进行集群。为了记录用户并发插入大数据量系统的响应时间,在相关表中添加了日期时间型字段,记录插入首条和末尾记录的时间,这样,末尾时间减去首条记录插入时间,就是多用户并发插入大批量数据的执行时间了。实施过程如下:第一步,数据库管理员

3、用Java写了一段代码:import java.sql.*; public class testclus public static void main(String args) /如果传入参数个数不等于2,则给出提示信息"调用:java testclus ip:port recordcnt"if (args.length!=2)System.out.println("调用:java testclus ip:port recordcnt"); return;/根据传入参数,动态建立连接字符串String URL = "jdbc:mysql:/&

4、quot; +args0+"/testclus?characterEncoding=gbk" int cnt = Integer.parseInt(args1);try /声明并得到起始记录插入时间long timeBegin;java.util.Date d1 = new java.util.Date();/数据库连接初始化操作Class.forName("com.mysql.jdbc.Driver").newInstance();Connection conn = DriverManager.getConnection(URL,"root&

5、quot;,"admin");/循环插入记录PreparedStatement pstmt = conn.prepareStatement("insert into test(cnt, timer) values (?, now()");Statements=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); timeBegin = d1.getTime(); for (int i=1; i<=cnt; i+)pstmt.setInt(1

6、, i);pstmt.executeUpdate();ResultSet rs=s.executeQuery("select count(*) from test"); conn.close(); /得到末尾记录和起始记录插入的时间差值并输出java.util.Date d2 = new java.util.Date(); System.out.println(d2.getTime()-timeBegin+" 毫秒"); /异常处理部分catch(ClassNotFoundException e) System.out.println("找不到

7、驱动程序"); e.printStackTrace(); catch(SQLException e) e.printStackTrace(); catch (Exception e) e.printStackTrace(); 接下来,再建立一个批处理文件,批处理文件内容如下:echo offif "%JAVA_HOME%" = "" goto error_settingset CLASSPATH=%JAVA_HOME%jrelibrt.jarset CLASSPATH=%CLASSPATH%;mysql-connector-java-3.1.7

8、-bin.jar;testclus.jar%JAVA_HOME%binjava -classpath "%CLASSPATH%" testclus %1 %2goto end:error_settingecho -echo 使用方法:echo 1.请设置JAVA_HOME环境变量(JDK1.4安装路径);echo 2.请先将本程序所在的目录选择为当前目录后再执行。echo -goto end:endset CLASSPATH=批处理接受2个参数,第一个参数为数据库服务器的“IP地址:端口号”,第二个参数为需要循环插入的数据数。如:testclus 5:

9、3306 1000,其含义就是向IP地址为5,端口为3306的mysql数据库中插入1000条记录。4.1.2 批处理方式解决方案LoadRunner 如何调用批处理文件呢?LoadRunner 中可以调用System()函数来调用一个可执行文件或者批处理文件等,所以我们就可以直接调用该函数,指定相关参数,为了能够进行多用户并发,需要插入集合点。相关脚本如下:#include "web_api.h"Action() lr_rendezvous("in"); system("testclus 5:330

10、6 1000"); return 0;为了进行集群测试,还需要另外创建两个脚本,两个脚本如下:#include "web_api.h"Action() lr_rendezvous("in"); system("testclus 4:3306 1000");return 0;#include "web_api.h"Action() lr_rendezvous("in"); system("testclus 6:3306 1000&qu

11、ot;);return 0;接下来,就可以分别在Controller中进行负载了,相应场景设置如下:图41:单一数据应用服务器场景设置图42:三台数据应用服务器集群场景设置而后该场景在数据库为空和数据库存在百万条记录情况下分别进行测试,经过几轮测试对结果的分析发现集群后性能比单台数据应用服务器的性能提高3到5倍。【作者提示】1. 在进行性能测试的时候,一定要注意环境的一致,包括:操作系统、应用软件的版本以及硬件的配置等,而且在进行数据库方面的测试的时候一定要注意数据库的记录数、配置等要一致,只有在相同条件下进行测试,才可以对结果进行比较。2. 如果几个脚本要实现并发,集合点一定要设置成相同的名称,如在本例中名称都为“in”。3. Java程序运行所依赖的jar包以及批处理文件应放置到脚本所在目录,否则无法正确运行。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论