目的:
jdbc是用来测试数据库在增删改查等操作的性能或找出数据库某些方面的瓶颈
1、环境准备
Jmeter的lib目录下,需要包含mysql-connector-java-5.1.31.jar包,这个包用来连接MySQL,若无则无法连接到MySQL
![efc4a4047ad2499a92cffe12e4037cfa.png](https://i-blog.csdnimg.cn/blog_migrate/18d17cee85628915d17a20eca5619886.jpeg)
2、连接数据库
添加配置元件:JDBC Connection Configuration
![6745c5c668eacccf6c0e4a3efc405814.png](https://i-blog.csdnimg.cn/blog_migrate/abaa378747719cfb16fa1b161355e1cb.jpeg)
填写参数(红框标出来部分为必填,其余使用默认值即可)
Variable Name for created pool:为数据库创建的变量名,后面发起请求时要用
DataBase URL:数据库地址,格式为 端口/要连的数据库名(jdbc:mysql://为固定写法)例如连接本地:jdbc:mysql://localhost:3306/dbname
JDBC Driver class:参数是固定的,填org.gjt.mm.mysql.Driver或com.mysql.jdbc.Driver
Username:数据库登录名(如果是远程连接,需要确保用户名有远程访问数据库权限)
Password:登录密码
![d85e1083d4ffd0076e354126920c48d3.png](https://i-blog.csdnimg.cn/blog_migrate/740a6ef9e397f897f166b031f3de4352.jpeg)
3、发起数据库请求
添加取样器:JDBC Request
![9083b8c7b88ee7cf303cd6674fb2ee87.png](https://i-blog.csdnimg.cn/blog_migrate/50a2a2596a747156819397c9c26c87df.jpeg)
填写参数
Variable Name:即为步骤2创建连接时的数据库变量名
SQL Query区:直接输入SQL语句
Query Type:声明当前的语句类型(select、update等)
![02a738cf6a7bb1e8019b585c9387e00a.png](https://i-blog.csdnimg.cn/blog_migrate/fc49460faed0aa91618f3ddb2195b3f8.jpeg)
![e884b1595fa597223acd42e6e6f192ce.png](https://i-blog.csdnimg.cn/blog_migrate/7a107b7701b9aacb9d0de39735db377c.jpeg)
4、查看执行结果
和其他类型的Sampler查看结果树是一样的
![9655441a708adcf891ba03d737ef299e.png](https://i-blog.csdnimg.cn/blog_migrate/403101192a7714f2d971e63988fea546.png)
常见问题:
1、运行数据库时可能会遇到out of memory的错误,由于jmeter本身设置的运行内存很小,数据太多会导致内存溢出无法正常运行,windows环境下运行的Jemeter可以在Jemeter.bat修改如图一下的参数:
![211d3e43aeeb43df30c543ac971a73a5.png](https://i-blog.csdnimg.cn/blog_migrate/28011fbd1237a35accec13c4e06a0a98.png)
2、连接数据库失败:连接参数问题
![90664c3e0b1b262eced64a6a8fa52290.png](https://i-blog.csdnimg.cn/blog_migrate/c22f8f7dc4bae6845166828292f386a3.jpeg)
连接数据库时URL中?后面可以跟一些数据库的参数,可以根据报错检查下是否必填的参数没有传;通过&可以传递多个参数
3、连接数据库失败:数据库端防火墙问题
![977b2db3c4810ffe74fe20b35f1838c1.png](https://i-blog.csdnimg.cn/blog_migrate/10de2afcf732dbee3238ef595bd3e7c9.jpeg)
报错中可以看到发送请求是成功的,但是未接收到数据包,一般是服务器端防火墙未关闭导致的