准备工作
- 准备MySQL JDBC驱动Jar包:mysql-connector-java-5.1.13-bin.jar;
将JDBC 驱动直接放置在 Jmeter/lib/ext 目录下即可。
- 重启Jmeter
添加JDBC Connection Configuration
在测试计划中添加JDBC Connection Configuration组件,配置数据库连接信息
- Variable Name for created pool:必填,jdbc连接变量名,用于后续jdbc组件调用。<4.0版本的Jmeter此属性为“Variable Name”
- Database Connection Configuration:JDBC连接配置信息,Database URL、Username、Password皆可调用上文参数
- 其他配置项:无特殊情况,默认即可。
不同数据库的驱动类和URL格式:
JDBC查询
Jmeter中支持JDBC查询的组件为:JDBC Request、JDBC PreProcessor、JDBC PostProcessor。
说明一点:这里用到的 Query Type 为:Select statement,这是一个查询语句类型,如果在 Query 中查询的是一条语句,就可以采用这种查询类型,但是当查询语句多于一条的时候,就不能在使用此查询类型,需要设置 Query Type 为:Callable Statement。
另外:当 JDBC 脚本执行的时候,总是会优先去执行 Select statement 的第一行。
- Variable name:这里写入数据库连接池的名字(和JDBC Connection Configuration名字保持一致 )。
- Query Type:支持多种查询方式,常用的为Select statement和Prepared Select Statement。
- Query:里面填入查询数据库数据的SQL语句(填写的SQL语句末尾不要加“;”),支持调用上文参数。
- Parameter valus:数据的参数值。
- Parameter types:数据的参数类型。
- Variable names:保存SQL语句返回结果的变量名。
- Result variable name:创建一个对象变量,保存所有返回结果。
- Query timeout:查询超时时间。
- Handle ResultSet:定义如何处理由callable statements语句返回的结果。
Query Type
1. Select statement
适用于查询语句就只有一条,且可直接执行(但可以使用${xxx}调用上文参数)。如果Query中有多条查询语句,则只执行第一条语句。
2. Prepared Select Statement
适用于条件查询,在where条件语句中,使用?替代参数值,在Parameter values中填上对应的参数值;Parameter values中的值与Query中的?一一对应,并以","分隔;Parameter types填入varchar,Parameter values有几个参数值,就填几个varchar,用“,”分隔。(不管什么参数,均填varchar)。
select id from ide.rdos_table where id = ?;
3. Update statement
这是一个更新语句类型(包含insert和update);如果JDBC Request中的Query内容为一条更新语句,则选择这种类型。如果该类型下写入多条update语句,依然只执行第一条。
4. Callable statement
适用于多条语句。
5. Prepared update statement
Prepared update statement和Prepared select statement的用法是相似的。
6. Commit
将未存储的SQL语句结果写入数据库表;而在jmeter的JDBC请求中,同样可以根据具体使用情况,选择这种Query类型。
7. Rollback
撤销指定SQL语句的过程;在jmeter的JDBC请求中,同样可以根据需要使用这种类型。
8. AutoCommit(false)
MySQL默认操作模式就是autocommit自动提交模式。表示除非显式地开始一个事务,否则每条SQL语句都被当做一个单独的事务自动执行;我们可以通过设置autocommit的值改变是否是自动提交autocommit模式;
而AutoCommit(false)的意思是AutoCommit(假),即将用户操作一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。
扩展:当SQL只执行一次,可以选择statement类型,如果SQL会执行多次,可以使用prepared statement。prepared statement在第一次执行时,会消耗较高性能。