jmeter快速上手(三)jdbc压测数据库

数据库压测,也是一个常见的测试任务,比如测试查询效率、插入效率、响应时间、(加解密)函数效率等。对于oracle、musql等数据库最常见的连接方式就是jdbc,接下来以oracle为例说明jmeter压测数据库的过程,附带部分mysql说明。因为前面已经详细介绍了jmeter的具体使用,所以,不熟悉jmeter和步进测试的同学,可以先看下前一篇文章

一、测试流程

1、添加jar包

将相应的jdbc驱动jar包放置在jmeter的lib/ext目录下。如:ojdbc6.jar(可在数据库安装目录下找到)。mysql是mysql-connectr...

2、配置

(1)启动jmeter,测试计划右击,添加线程组。
(2)线程组右击,点击 添加-->配置元件-->JDBC Connection Configuration

(3)各配置解释如下
名称:随意命名。
Variable Name for created pool:自定义变量名称,一定要写,待会要用到,这里使用 oracletest。
Max Number of Connections:最大连接数,这里使用100。
Validation Query:oracle选择 select 1 from dual;mysql选择 select 1。
Database URL:oracle设置为 jdbc:oracle:thin:@10.1.2.3:1521:testdb。前面不要改,中间是数据库所在服务器IP地址和端口,testdb是数据库名。mysql格式为:jdbc:mysql://10.1.2.3:3306/testdb。
JDBC Driver class:oracle选择 oracle.jdbc.OracleDriver;mysql选择 como.mysql.jdbc.Driver。关于每个数据库的驱动信息可以参考最后的附表。
Username:数据库名。
Passwd:数据库密码。

3、jdbc请求
线程组右击,点击 添加-->取样器-->JDBC Request。

Variable Name of Pool declared in JDBC Connection Configuration:填入上文配置的JDBC configure中的变量名 oracletest。
Query Type:根据需要执行的语句选择,如果是select查询,选择Select Statement;如果是insert操作,选择Update Statement,,且Update语句可以执行多条非select语句。
Query:填入需要执行的sql语句,注意最后不要写分号。

Select Statement、Update Statement、Callable Statement的区别:
Select Statement:仅支持select语句,一次只能执行一条。
Update Statement:支持非select语句,并且支持执行多条语句。若其中有select语句,会自动忽略;若第一条是select语句,报错。
Callable Statement:只要语法正确,可以执行多条任意语句。
在执行delete的时候需要注意,即使没有这条记录,jmeter也不会报错。

4、监听器
线程组右击,点击 添加-->监听器,添加需要的监听器。

5、压测TPS
压测TPS建议使用步进压测,具体请参考前一篇文章

6、Linux下测试
在windows下UI测试界面很直观,但是很容易遇到windows网络瓶颈,一般会找一台和数据库服务器在同一网段的服务器作为压测机进行压测。在放到Linux测试前,建议在windows下先调试完毕,没问题以后再放到linux下压测。

(1)压测机上安装jdk和jmeter,比较简单,直接解压就可以了。jmeter不要直接copy windows下的jmeter文件夹,要copy压缩包到linux下解压。
(2)把需要的依赖包,放到linux下的lib目录中,可以把windows下添加的依赖包,直接拉过去。
(3)保存windows下的测试计划为 jmx 文件,拉到linux下。
(4)在linux下执行  JMETER_HOME/bin/jmeter -n -t test01.jmx -l result01.jtl 。
(5)把测试结果result01.jtl拉回windows下,在jmeter的监听器查看测试结果。点击浏览,选择测试结果文件即可。注意:默认情况下jmeter为了减少测试结果文件的大小,察看结果树中是不保存返回结果的。如果需要保存返回结果,请查看后面的附录。

二、附录

1、不同数据库的驱动类
 

Datebase

Driver class

Database URL

MySQL

com.mysql.jdbc.Driver

jdbc:mysql://IP:3306/dbname

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@IP:1521:dbname

Ingres(2006)

ingres.jdbc.IngresDriver

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

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

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

或者

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

2、Linux保存返回结果
打开 JMETER_HOME/bin/user.properties文件,在最后添加下列信息即可。
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true

猜你喜欢

转载自blog.csdn.net/haveanybody/article/details/89002778