Jmeter,数据库压力测试

因工作需求,需对数据库进行压力测试

最开始使用研发写的Java代码进行测试,突然想到jmeter也可以对数据库进行压测,那为啥不自己研究一套方法出来呢。

于是网上搜索了一下关于如何对数据库进行压测的帖子,虽说遇到了一些问题,但最终还是解决了。

流程如下

首先,需确定待测的数据库是什么类型,我所测试的是mysql。

jmeter支持很多数据库,只需要更改对应的数据库驱动类和url。以下为整理到的数据库驱动类对应url。并且给出一个mysql数据库select的简单应用。如下:

一 不同数据库驱动类和对应的url:

Datebase

Driver class

Database URL

MySQL

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

Ingres (2006)

ingres.jdbc.IngresDriver

jdbc:ingres://host:port/db[;attr=value]

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:1433;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

二、mysql的select语句压力测试案例:

 1、打开Jmeter,创建一个测试计划,添加线程组,如下:

2、为线程组添加一个JDBC请求:选中线程组->添加->Sampler->JDBC Request

   填写对应的测试语句,增删改查等在Query Type中设置。

3、添加jdbc配置元件:添加->配置元件->JDBC Connection Configuration

4、再添加一个监听器:察看结果数。点击运行,可以在察看结果数中察看运行的结果,绿色的代表通过。红色的有问题,需根据实际情况定位

三、过程中遇到的问题如下:

1JDBC的使用问题(运行错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver;  java.lang.ClassNotFoundException:com.mysql.jdbc.Driver)

resp:缺少jar包,下载后放到Jmeter目录下:apache-jmeter-2.13lib,重启jmeter解决(没有重启前始终报错)

下载地址:https://dev.mysql.com/downloads/file/?id=476197

2、解决第一个问题后,执行,又遇到报错,com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; 

该错是因为SQL语句有问题,我的查询语句的表是中文字符的,因使用Oracle习惯性的加上单引号,结果没想到mysql不区分中英文,不用加引号,将单引号去除后就解决了。

原文地址:https://www.cnblogs.com/zjn-20161215/p/8691465.html