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、再添加一个监听器:察看结果数。点击运行,可以在察看结果数中察看运行的结果,绿色的代表通过。红色的有问题,需根据实际情况定位
三、过程中遇到的问题如下:
resp:缺少jar包,下载后放到Jmeter目录下:apache-jmeter-2.13\lib,重启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不区分中英文,不用加引号,将单引号去除后就解决了。