JMeter 连接MySQL数据库
1.在测试计划中添加mysql驱动包 mysql-connector-java-8.0.21.jar
2. 测试计划下点击右键,选择“添加”--“配置元件”--“JDBC Connection Configuration”
3. 配置数据库信息
Variable Name to Pool
- Variable Name for created pool 不能为空,变量名称,需要变量名绑定到池,需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置
Connection Pool Configuration
- MaxNumber of Connection: 数据库最大链接数
- Max Wait(ms): 数据库最大等待时间,单位ms
- Time Between Evicition Runs(ms): 数据库空闲清理的间隔时间,单位ms
- Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)
- Transaction Isolation:事务间隔级别设置,主要有如下几个选项:(对JMX加解密)DEFAULT默认、编辑;TRANSACTION_REPEATABLE_READ事务重复读;TRANSACTION_READ_COMMITTED事务已提交读 ;TRANSACTION_SERIALIZABLE事务序列化 ;TRANSACTION_READ_UNCOMMITTED事务未提交读;TRANSACTION_NODE 事务节点 。
Connection Validation by Pool
- Test While Idle: 是否保持连接
- Soft Min Evictable Idle Time(ms):最大连接时长,超过时长的会被拒绝
- Validation Query:验证查询,检验连接是否有效(数据库重启后之前的连接都失效,需要验证查询)
Datebase Connection Confuguration
- DataBase URL 格式为:jdbc:mysql://服务器ip:端口号/数据库;若一次执行多个sql语句,则需要加上参数?allowMultiQueries=true
- JDBC Driver Class:com.mysql.jdbc.Driver
- 输入数据库的Username和Password
4. 添加JDBC取样器,在线程组上点击右键,选择“添加”--“取样器”--“JDBC Request”
5. 配置JDBC取样器
设置Variable Name Bound to Pool,此处配置为mysql(与配置元件中的Variable Name for created pool一致)
设置SQL Query,可以选择sql的类型,是查询还是修改还是删除操作
Query Type:
- Select statement:查询语句类型;只执行第一条select语句。
- Update statement:更新语句类型(包含insert、update和delete);只执行第一条语句。
- Callable statement:可调用语句类型,执行多条语句。详细学习地址
- Prepared select statement:执行一条带参数的查询语句。(第一次执行消耗是很高的. 它的性能体现在后面的重复执行)
- Prepared update statement:执行一条带参数的更新语句。(包含insert、update和delete)
- Commit:将未存储的SQL语句结果写入数据库表;而在jmeter的JDBC请求中,同样可以根据具体使用情况,选择这种Query类型。
- Rollback:撤销指定SQL语句的过程;在jmeter的JDBC请求中,同样可以根据需要使用这种类型。
- AutoCommit(false):AutoCommit(假),即将用户操作一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。
- AutoCommit(true):无论何种情况,都自动提交将结果写入,结束当前事务开始下一个事务。
- 编辑(${}):jmeter中的JDBC请求中的SQL语句是无法使用参数的,比如: SELECT * FROM ${table_name} 是无效的。如果需实现同时多个不同用户使用不同的SQL,可以通过把整条SQL语句参数化来实现;(把SQL语句放在csv文件中,然后在JDBC Request的Query 中使用参数代替 ${SQL_Statement})。
Query:用于编写数据库语言
Parameter values:sql语句中的变量名,如:${param}
Parameter types:变量名在数据库中对应的类型,如:VARCHAR
Variable names:以逗号分隔的变量名称列表,用于保存Select语句,Prepared Select语句或CallableStatement返回的值。如果变量名少于输出参数,则在线程上下文中应存储与提供的变量名一样多的结果。如果变量名称多于输出参数,则多余变量名将被忽略
Result variable name:以一个map形式进行的存储返回值。在BaenShellProcesser进行提取调用,用法:columnValue = var.getObject(“resultObject”).get(0).get(“列名”);
Query timeout(s):设置查询超时时间(秒),空值表示0(不限制)。默认为0
Handle ReaultSet:定义如何处理执行SQL语句返回的ResultSet;默认为 Store as String