fish_yy 发表于 2008-5-22 15:30:14

一种特殊的数据库性能测试方法

脚本如下:



4.1 一种特殊的数据库性能测试方法
很多同志在进行数据方面性能测试时束手无策,前面在第二章的第二节我们已经介绍了如何应用ODBC协议录制LoadRunner 8.0自身带的“Flights-ODBC_Access”例子。这里作者为您提供另一种简便的方法。问题描述:一个面向全国各个中小学的信息管理系统,随着系统被广泛的应用,访问人数的急剧增加、数据量也在飞速增长,如何为用户提供方便、快捷的应用呢?

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

            int cnt = Integer.parseInt(args);

            try {

  //声明并得到起始记录插入时间

                     long timeBegin;

                     java.util.Date   d1 = new java.util.Date();

  //数据库连接初始化操作

                     Class.forName("com.mysql.jdbc.Driver").newInstance();

                     Connection conn = DriverManager.getConnection(URL,"root","admin");

  //循环插入记录

                     PreparedStatement pstmt = conn.prepareStatement("insert into test(cnt, timer)

values (?, now())");

                     Statement s=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_READ_ONLY);

                     timeBegin = d1.getTime();   

                     for (int i=1; i<=cnt; i++)

                     {

                            pstmt.setInt(1, 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("找不到驱动程序");

                     e.printStackTrace();

            }

            catch(SQLException e) {

                     e.printStackTrace();

            }

            catch (Exception e) {

                     e.printStackTrace();

            }

       }

}


#include "web_api.h"

Action()

{

    lr_rendezvous("in");

    system("testclus 192.168.0.44:3306 1000");

       return 0;

}

q789789q 发表于 2008-5-22 15:52:52

这个到底怎么用呢,还是不清楚

ppent 发表于 2008-5-22 17:25:01

不错,学习一下,:)

liangjz 发表于 2008-5-22 21:13:49

System.out.println("调用:java testclus ip:port recordcnt");



这个用法很清楚了。核心代码就是JDBC 

fish_yy 发表于 2008-5-23 07:46:34

原帖由 liangjz 于 2008-5-22 21:13 发表 http://bbs.51testing.com/images/common/back.gif
System.out.println("调用:java testclus ip:port recordcnt");



这个用法很清楚了。核心代码就是JDBC 


呵呵,加上这句就更清楚了!

fish_yy 发表于 2008-5-23 14:27:02

搞这方面的朋友地是不是少啊?

0341110113 发表于 2008-5-23 14:49:22

我是是没明白,能加楼主QQ交流一下么?我的QQ:532883334
最近在搞数据库压力测试。一直没有头绪。还往楼主赐教~~:)

fish_yy 发表于 2008-5-23 16:04:10

我会加你的QQ,到时我们再聊!

fish_yy 发表于 2008-5-29 15:23:01

原帖由 0341110113 于 2008-5-23 14:49 发表 http://bbs.51testing.com/images/common/back.gif
我是是没明白,能加楼主QQ交流一下么?我的QQ:532883334
最近在搞数据库压力测试。一直没有头绪。还往楼主赐教~~:)


加你好像没通过你的验证啊!
页: [1]
查看完整版本: 一种特殊的数据库性能测试方法