jmeter技巧记录3: JDBC操作

JDBC操作

jdbc操作包括jdbc的连接与数据库操作,主要用于数据初始化和事后数据清洗

准备: 连接前需要下载驱动jar包,mysql为例,先下载mysql-connector-java-x.x.x-bin.jar,把mysql-connector-java-x.x.x-bin.jar放到Jmeter安装目录下的lib目录下

下载地址: https://www.mysql.com/products/connector/

1. JDBC Connection Configuration

位置: 添加-配置元件-JDBC Connection Configuration

jmeter技巧记录3: JDBC操作

参数说明:

Variable Name: 数据库连接的别名,在后面JDBC Request中也有一个叫做“Variable name”的变量名称,需要关联起来,主要作用用于当多数据源时候区分数据源。

Max Number of Connections: 线程池中允许的最大连接数

Max Wait(ms):在连接池中取回连接最大等待时间

Time Between Eviction Runs (ms):连接空闲回收时间,如果当前连接池中某个连接在空闲了time Between Eviction Runs Millis时间后任然没有使用,则被物理性的关闭掉。

Auto Commit:自动提交sql语句

transaction isolation:事务隔离级别 

  • TRANSACTION_NODE 事务节点
  • TRANSACTION_READ_UNCOMMITTED  事务未提交读
  • TRANSACTION_READ_COMMITTED   事务已提交读 
  • TRANSACTION_SERIALIZABLE   事务序列化
  • DEFAULT  默认
  • TRANSACTION_REPEATABLE_READ 事务重复读

Test While Idle :当空闲的时候测试连接是否断开

Soft Min Evictable Idle Time(ms) :最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)

Validation Query :验证查询 。一个简单的查询,用来确定数据库是否仍在响应

Database URL:数据库url,jdbc:mysql://localhost:3306/test?characterEncoding=utf-8

JDBC Driver class:JDBC驱动

username:数据库登陆的用户名

passwrod:数据库登陆的密码

2. JDBC Request

位置: 添加-Sampler-JDBC Request

jmeter技巧记录3: JDBC操作

参数说明:

Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration中需要查询的数据库的Variable Name名字保持一致

Query Type:sql操作类型(10种类型)

  • Select statement  查询语句,只能执行一条查询语句(多个查询语句只执行第一条语句,需要查询多个type为Callable Statement)
  • Update statement 包含insert和update的更新语句(多个更新语句只执行第一条语句,需要更新多个type为Callable Statement)
  • Callable statement  存储结构调用方式 ,  调用方式  call 存储过程名(?,?)
  • Prepared select statement  对于多次执行的查询SQL语句,并且参数需要循环参数化, sql语句可用?占位符(如select * from table where user = ? and age = ?  时候, Parameter types可以填写 ${name},${age}   Parameter types填写VARCHAR,Integer)
  • Prepared update statement 同上
  • Commit 将未存储的SQL语句结果写入数据库表
  • Rollback 撤销指定SQL语句
  • AutoCommit(false) 禁止自动提交模式,MySQL默认操作模式就是autocommit自动提交模式
  • AutoCommit(true) 无论何种情况,都自动提交将结果写入,结束当前事务开始下一个事务。
  • 编辑(${})jmeter中的JDBC请求中的SQL语句是无法使用参数的,比如: SELECT * FROM ${table_name} 是无效的。如果需实现同时多个不同用户使用不同的SQL,可以通过把整条SQL语句参数化来实现;(把SQL语句放在csv文件中,然后在JDBC Request的Query 中使用参数代替 ${SQL_Statement})

Query:填写的sql语句地方(如果只有单条SQL,则不要添加分号,如果有多条,需要在不是最后一条的其他sql结尾处加分号)

Parameter valus:参数值

Parameter types:参数类型,可参考:Javadoc for java.sql.Types

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

Query timeout:查询超时时间

Handle result set:定义如何处理由callable statements语句返回的结果